1 /* 2 SPDX-FileCopyrightText: 2020-2021 Laurent Montel <montel@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5 */ 6 7 #pragma once 8 9 #include "librocketchatrestapi-qt5_export.h" 10 #include "restapiabstractjob.h" 11 #include <QDateTime> 12 #include <QDebug> 13 namespace RocketChatRestApi 14 { 15 class LIBROCKETCHATRESTAPI_QT5_EXPORT RoomsCleanHistoryJob : public RestApiAbstractJob 16 { 17 Q_OBJECT 18 public: 19 struct LIBROCKETCHATRESTAPI_QT5_EXPORT CleanHistoryInfo { 20 Q_REQUIRED_RESULT bool isValid() const; 21 QDateTime latest; // required 22 QDateTime oldest; // required 23 QString roomId; // required 24 QStringList users; 25 bool inclusive = false; 26 bool excludePinned = false; 27 bool filesOnly = false; 28 bool ignoreThreads = false; 29 bool ignoreDiscussion = false; 30 }; 31 explicit RoomsCleanHistoryJob(QObject *parent = nullptr); 32 ~RoomsCleanHistoryJob() override; 33 34 Q_REQUIRED_RESULT bool start() override; 35 Q_REQUIRED_RESULT bool requireHttpAuthentication() const override; 36 Q_REQUIRED_RESULT bool canStart() const override; 37 38 Q_REQUIRED_RESULT QNetworkRequest request() const override; 39 40 Q_REQUIRED_RESULT QJsonDocument json() const; 41 42 Q_REQUIRED_RESULT CleanHistoryInfo cleanHistoryInfo() const; 43 void setCleanHistoryInfo(const CleanHistoryInfo &cleanHistoryInfo); 44 45 Q_SIGNALS: 46 void cleanHistoryDone(); 47 48 private: 49 Q_DISABLE_COPY(RoomsCleanHistoryJob) 50 void onPostRequestResponse(const QJsonDocument &replyJson) override; 51 CleanHistoryInfo mCleanHistoryInfo; 52 }; 53 } 54 Q_DECLARE_TYPEINFO(RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo, Q_MOVABLE_TYPE); 55 LIBROCKETCHATRESTAPI_QT5_TESTS_EXPORT QDebug operator<<(QDebug d, const RocketChatRestApi::RoomsCleanHistoryJob::CleanHistoryInfo &t); 56