File indexing completed on 2025-02-02 04:51:45

0001 /*
0002    SPDX-FileCopyrightText: 2020-2024 Laurent Montel <montel@kde.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "librocketchatrestapi-qt_export.h"
0010 #include "restapiabstractjob.h"
0011 #include <QDateTime>
0012 #include <QDebug>
0013 namespace RocketChatRestApi
0014 {
0015 class LIBROCKETCHATRESTAPI_QT_EXPORT RoomsCleanHistoryJob : public RestApiAbstractJob
0016 {
0017     Q_OBJECT
0018 public:
0019     struct LIBROCKETCHATRESTAPI_QT_EXPORT CleanHistoryInfo {
0020         [[nodiscard]] bool isValid() const;
0021         QDateTime latest; // required
0022         QDateTime oldest; // required
0023         QString roomId; // required
0024         QStringList users;
0025         bool inclusive = false;
0026         bool excludePinned = false;
0027         bool filesOnly = false;
0028         bool ignoreThreads = false;
0029         bool ignoreDiscussion = false;
0030     };
0031     explicit RoomsCleanHistoryJob(QObject *parent = nullptr);
0032     ~RoomsCleanHistoryJob() override;
0033 
0034     [[nodiscard]] bool start() override;
0035     [[nodiscard]] bool requireHttpAuthentication() const override;
0036     [[nodiscard]] bool canStart() const override;
0037 
0038     [[nodiscard]] QNetworkRequest request() const override;
0039 
0040     [[nodiscard]] QJsonDocument json() const;
0041 
0042     [[nodiscard]] CleanHistoryInfo cleanHistoryInfo() const;
0043     void setCleanHistoryInfo(const CleanHistoryInfo &cleanHistoryInfo);
0044 
0045 Q_SIGNALS:
0046     void cleanHistoryDone();
0047 
0048 private:
0049     Q_DISABLE_COPY(RoomsCleanHistoryJob)
0050     LIBROCKETCHATRESTAPI_QT_NO_EXPORT void onPostRequestResponse(const QString &replyErrorString, const QJsonDocument &replyJson) override;
0051     CleanHistoryInfo mCleanHistoryInfo;
0052 };
0053 }
0054 Q_DECLARE_TYPEINFO(RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo, Q_RELOCATABLE_TYPE);
0055 LIBROCKETCHATRESTAPI_QT_EXPORT QDebug operator<<(QDebug d, const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &t);