diff --git a/Telegram/SourceFiles/main/main_session_settings.cpp b/Telegram/SourceFiles/main/main_session_settings.cpp index 4290012d0a..0be24c19c7 100644 --- a/Telegram/SourceFiles/main/main_session_settings.cpp +++ b/Telegram/SourceFiles/main/main_session_settings.cpp @@ -66,6 +66,8 @@ QByteArray SessionSettings::serialize() const { + Serialize::stringSize(auth.location); } size += sizeof(qint32); // _setupEmailState + size += sizeof(qint32) // _moderateCommonGroups size + + (_moderateCommonGroups.size() * sizeof(quint64)); auto result = QByteArray(); result.reserve(size); @@ -147,6 +149,10 @@ QByteArray SessionSettings::serialize() const { << auth.location; } stream << qint32(static_cast(_setupEmailState)); + stream << qint32(_moderateCommonGroups.size()); + for (const auto &peerId : _moderateCommonGroups) { + stream << SerializePeerId(peerId); + } } Ensures(result.size() == size); @@ -219,6 +225,7 @@ void SessionSettings::addFromSerialized(const QByteArray &serialized) { base::flat_set ratedTranscriptions; std::vector unreviewed; qint32 setupEmailState = 0; + std::vector moderateCommonGroups; stream >> versionTag; if (versionTag == kVersionTag) { @@ -635,6 +642,23 @@ void SessionSettings::addFromSerialized(const QByteArray &serialized) { if (!stream.atEnd()) { stream >> setupEmailState; } + if (!stream.atEnd()) { + auto count = qint32(0); + stream >> count; + if (stream.status() == QDataStream::Ok) { + for (auto i = 0; i != count; ++i) { + quint64 peerId; + stream >> peerId; + if (stream.status() != QDataStream::Ok) { + LOG(("App Error: " + "Bad data for SessionSettings::addFromSerialized()" + "with moderateCommonGroups")); + return; + } + moderateCommonGroups.emplace_back(DeserializePeerId(peerId)); + } + } + } if (stream.status() != QDataStream::Ok) { LOG(("App Error: " "Bad data for SessionSettings::addFromSerialized()")); @@ -698,6 +722,8 @@ void SessionSettings::addFromSerialized(const QByteArray &serialized) { break; } + _moderateCommonGroups = std::move(moderateCommonGroups); + if (version < 2) { app.setLastSeenWarningSeen(appLastSeenWarningSeen == 1); for (const auto &[key, value] : appSoundOverrides) { diff --git a/Telegram/SourceFiles/main/main_session_settings.h b/Telegram/SourceFiles/main/main_session_settings.h index 95eabcf23e..16e4f07ab2 100644 --- a/Telegram/SourceFiles/main/main_session_settings.h +++ b/Telegram/SourceFiles/main/main_session_settings.h @@ -176,6 +176,13 @@ public: void setSetupEmailState(Data::SetupEmailState state); [[nodiscard]] Data::SetupEmailState setupEmailState() const; + void setModerateCommonGroups(std::vector groups) { + _moderateCommonGroups = std::move(groups); + } + [[nodiscard]] const std::vector &moderateCommonGroups() const { + return _moderateCommonGroups; + } + private: static constexpr auto kDefaultSupportChatsLimitSlice = 7 * 24 * 60 * 60; static constexpr auto kPhotoEditorHintMaxShowsCount = 5; @@ -222,6 +229,8 @@ private: Data::SetupEmailState _setupEmailState; + std::vector _moderateCommonGroups; + }; } // namespace Main