File indexing completed on 2024-05-12 05:02:10

0001 /*
0002    SPDX-FileCopyrightText: 2023-2024 Laurent Montel <montel.org>
0003 
0004    SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "moderationinfos.h"
0008 #include "ruqola_debug.h"
0009 
0010 #include <QJsonArray>
0011 #include <QJsonObject>
0012 
0013 ModerationInfos::ModerationInfos() = default;
0014 
0015 QDebug operator<<(QDebug d, const ModerationInfos &t)
0016 {
0017     d.space() << "total" << t.total();
0018     d.space() << "offset" << t.offset();
0019     d.space() << "ModerationInfosCount" << t.moderationInfosCount() << "\n";
0020     for (int i = 0, total = t.moderationInfosList().count(); i < total; ++i) {
0021         d.space() << t.moderationInfosList().at(i) << "\n";
0022     }
0023     return d;
0024 }
0025 
0026 int ModerationInfos::offset() const
0027 {
0028     return mOffset;
0029 }
0030 
0031 void ModerationInfos::setOffset(int newOffset)
0032 {
0033     mOffset = newOffset;
0034 }
0035 
0036 int ModerationInfos::total() const
0037 {
0038     return mTotal;
0039 }
0040 
0041 void ModerationInfos::setTotal(int newTotal)
0042 {
0043     mTotal = newTotal;
0044 }
0045 
0046 int ModerationInfos::moderationInfosCount() const
0047 {
0048     return mModerationInfosCount;
0049 }
0050 
0051 void ModerationInfos::setModerationInfosCount(int newModerationInfosCount)
0052 {
0053     mModerationInfosCount = newModerationInfosCount;
0054 }
0055 
0056 const QVector<ModerationInfo> &ModerationInfos::moderationInfosList() const
0057 {
0058     return mModerationInfosList;
0059 }
0060 
0061 void ModerationInfos::setModerationInfosList(const QVector<ModerationInfo> &newModerationInfosList)
0062 {
0063     mModerationInfosList = newModerationInfosList;
0064 }
0065 
0066 bool ModerationInfos::isEmpty() const
0067 {
0068     return mModerationInfosList.isEmpty();
0069 }
0070 
0071 void ModerationInfos::clear()
0072 {
0073     mModerationInfosList.clear();
0074 }
0075 
0076 int ModerationInfos::count() const
0077 {
0078     return mModerationInfosList.count();
0079 }
0080 
0081 ModerationInfo ModerationInfos::at(int index) const
0082 {
0083     if (index < 0 || index > mModerationInfosList.count()) {
0084         qCWarning(RUQOLA_LOG) << "Invalid index " << index;
0085         return {};
0086     }
0087     return mModerationInfosList.at(index);
0088 }
0089 
0090 void ModerationInfos::parseModerationInfos(const QJsonObject &moderationInfosObj)
0091 {
0092     mModerationInfosList.clear();
0093     mModerationInfosCount = moderationInfosObj[QLatin1String("count")].toInt();
0094     mOffset = moderationInfosObj[QLatin1String("offset")].toInt();
0095     mTotal = moderationInfosObj[QLatin1String("total")].toInt();
0096     mModerationInfosList.reserve(mModerationInfosCount);
0097     parseModerationInfosObj(moderationInfosObj);
0098 }
0099 
0100 void ModerationInfos::parseModerationInfosObj(const QJsonObject &moderationInfosObj)
0101 {
0102     const QJsonArray moderationsArray = moderationInfosObj[QLatin1String("reports")].toArray();
0103     for (const QJsonValue &current : moderationsArray) {
0104         if (current.type() == QJsonValue::Object) {
0105             const QJsonObject moderationObject = current.toObject();
0106             ModerationInfo m;
0107             m.parseModerationInfo(moderationObject);
0108             mModerationInfosList.append(std::move(m));
0109         } else {
0110             qCWarning(RUQOLA_LOG) << "Problem when parsing moderations" << current;
0111         }
0112     }
0113 }
0114 
0115 void ModerationInfos::parseMoreModerationInfos(const QJsonObject &moderationInfosObj)
0116 {
0117     const int moderationInfosCount = moderationInfosObj[QLatin1String("count")].toInt();
0118     mOffset = moderationInfosObj[QLatin1String("offset")].toInt();
0119     mTotal = moderationInfosObj[QLatin1String("total")].toInt();
0120     parseModerationInfosObj(moderationInfosObj);
0121     mModerationInfosCount += moderationInfosCount;
0122 }
0123 
0124 ModerationInfo ModerationInfos::takeAt(int index)
0125 {
0126     return mModerationInfosList.takeAt(index);
0127 }