File indexing completed on 2025-01-12 13:02:58
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 ¤t : 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 }