storage_settings_scheme.h 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. /*
  2. This file is part of Telegram Desktop,
  3. the official desktop application for the Telegram messaging service.
  4. For license and copyright information please follow this link:
  5. https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
  6. */
  7. #pragma once
  8. #include "mtproto/mtproto_dc_options.h"
  9. #include "main/main_session_settings.h"
  10. #include "storage/storage_account.h"
  11. namespace MTP {
  12. class AuthKey;
  13. } // namespace MTP
  14. namespace Storage {
  15. namespace details {
  16. struct ReadSettingsContext {
  17. [[nodiscard]] Main::SessionSettings &sessionSettings() {
  18. if (!sessionSettingsStorage) {
  19. sessionSettingsStorage
  20. = std::make_unique<Main::SessionSettings>();
  21. }
  22. return *sessionSettingsStorage;
  23. }
  24. // This field is read in ReadSetting.
  25. bool legacyHasCustomDayBackground = false;
  26. // Those fields are written in ReadSetting.
  27. MTP::DcOptions fallbackConfigLegacyDcOptions
  28. = MTP::DcOptions(MTP::Environment::Production);
  29. qint32 fallbackConfigLegacyChatSizeMax = 0;
  30. qint32 fallbackConfigLegacySavedGifsLimit = 0;
  31. qint32 fallbackConfigLegacyStickersRecentLimit = 0;
  32. qint32 fallbackConfigLegacyStickersFavedLimit = 0;
  33. qint32 fallbackConfigLegacyMegagroupSizeMax = 0;
  34. QString fallbackConfigLegacyTxtDomainString;
  35. QByteArray fallbackConfig;
  36. qint64 cacheTotalSizeLimit = 0;
  37. qint32 cacheTotalTimeLimit = 0;
  38. qint64 cacheBigFileTotalSizeLimit = 0;
  39. qint32 cacheBigFileTotalTimeLimit = 0;
  40. std::unique_ptr<Main::SessionSettings> sessionSettingsStorage;
  41. FileKey themeKeyLegacy = 0;
  42. FileKey themeKeyDay = 0;
  43. FileKey themeKeyNight = 0;
  44. FileKey backgroundKeyDay = 0;
  45. FileKey backgroundKeyNight = 0;
  46. bool backgroundKeysRead = false;
  47. bool tileDay = false;
  48. bool tileNight = true;
  49. bool tileRead = false;
  50. FileKey langPackKey = 0;
  51. FileKey languagesKey = 0;
  52. QByteArray mtpAuthorization;
  53. std::vector<std::shared_ptr<MTP::AuthKey>> mtpLegacyKeys;
  54. qint32 mtpLegacyMainDcId = 0;
  55. qint32 mtpLegacyUserId = 0;
  56. bool legacyRead = false;
  57. };
  58. [[nodiscard]] bool ReadSetting(
  59. quint32 blockId,
  60. QDataStream &stream,
  61. int version,
  62. ReadSettingsContext &context);
  63. void ApplyReadFallbackConfig(ReadSettingsContext &context);
  64. enum {
  65. dbiKey = 0x00,
  66. dbiUser = 0x01,
  67. dbiDcOptionOldOld = 0x02,
  68. dbiChatSizeMaxOld = 0x03,
  69. dbiMutePeerOld = 0x04,
  70. dbiSendKeyOld = 0x05,
  71. dbiAutoStart = 0x06,
  72. dbiStartMinimized = 0x07,
  73. dbiSoundFlashBounceNotifyOld = 0x08,
  74. dbiWorkModeOld = 0x09,
  75. dbiSeenTrayTooltip = 0x0a,
  76. dbiDesktopNotifyOld = 0x0b,
  77. dbiAutoUpdate = 0x0c,
  78. dbiLastUpdateCheck = 0x0d,
  79. dbiWindowPositionOld = 0x0e,
  80. dbiConnectionTypeOldOld = 0x0f,
  81. // 0x10 reserved
  82. dbiDefaultAttach = 0x11,
  83. dbiCatsAndDogsOld = 0x12,
  84. dbiReplaceEmojiOld = 0x13,
  85. dbiAskDownloadPathOld = 0x14,
  86. dbiDownloadPathOldOld = 0x15,
  87. dbiScaleOld = 0x16,
  88. dbiEmojiTabOld = 0x17,
  89. dbiRecentEmojiOldOldOld = 0x18,
  90. dbiLoggedPhoneNumberOld = 0x19,
  91. dbiMutedPeersOld = 0x1a,
  92. // 0x1b reserved
  93. dbiNotifyViewOld = 0x1c,
  94. dbiSendToMenu = 0x1d,
  95. dbiCompressPastedImageOld = 0x1e,
  96. dbiLangOld = 0x1f,
  97. dbiLangFileOld = 0x20,
  98. dbiTileBackgroundOld = 0x21,
  99. dbiAutoLockOld = 0x22,
  100. dbiDialogLastPath = 0x23,
  101. dbiRecentEmojiOldOld = 0x24,
  102. dbiEmojiVariantsOldOld = 0x25,
  103. dbiRecentStickers = 0x26,
  104. dbiDcOptionOld = 0x27,
  105. dbiTryIPv6Old = 0x28,
  106. dbiSongVolumeOld = 0x29,
  107. dbiWindowsNotificationsOld = 0x30,
  108. dbiIncludeMutedOld = 0x31,
  109. dbiMegagroupSizeMaxOld = 0x32,
  110. dbiDownloadPathOld = 0x33,
  111. dbiAutoDownloadOld = 0x34,
  112. dbiSavedGifsLimitOld = 0x35,
  113. dbiShowingSavedGifsOld = 0x36,
  114. dbiAutoPlayOld = 0x37,
  115. dbiAdaptiveForWideOld = 0x38,
  116. dbiHiddenPinnedMessagesOld = 0x39,
  117. dbiRecentEmojiOld = 0x3a,
  118. dbiEmojiVariantsOld = 0x3b,
  119. dbiDialogsModeOld = 0x40,
  120. dbiModerateModeOld = 0x41,
  121. dbiVideoVolumeOld = 0x42,
  122. dbiStickersRecentLimitOld = 0x43,
  123. dbiNativeNotificationsOld = 0x44,
  124. dbiNotificationsCountOld = 0x45,
  125. dbiNotificationsCornerOld = 0x46,
  126. dbiThemeKeyOld = 0x47,
  127. dbiDialogsWidthRatioOld = 0x48,
  128. dbiUseExternalVideoPlayerOld = 0x49,
  129. dbiDcOptionsOld = 0x4a,
  130. dbiMtpAuthorization = 0x4b,
  131. dbiLastSeenWarningSeenOld = 0x4c,
  132. dbiSessionSettings = 0x4d,
  133. dbiLangPackKey = 0x4e,
  134. dbiConnectionTypeOld = 0x4f,
  135. dbiStickersFavedLimitOld = 0x50,
  136. dbiSuggestStickersByEmojiOld = 0x51,
  137. dbiSuggestEmojiOld = 0x52,
  138. dbiTxtDomainStringOldOld = 0x53,
  139. dbiThemeKey = 0x54,
  140. dbiTileBackground = 0x55,
  141. dbiCacheSettingsOld = 0x56,
  142. dbiPowerSaving = 0x57,
  143. dbiScalePercent = 0x58,
  144. dbiPlaybackSpeedOld = 0x59,
  145. dbiLanguagesKey = 0x5a,
  146. dbiCallSettingsOld = 0x5b,
  147. dbiCacheSettings = 0x5c,
  148. dbiTxtDomainStringOld = 0x5d,
  149. dbiApplicationSettings = 0x5e,
  150. dbiDialogsFiltersOld = 0x5f,
  151. dbiFallbackProductionConfig = 0x60,
  152. dbiBackgroundKey = 0x61,
  153. dbiEncryptedWithSalt = 333,
  154. dbiEncrypted = 444,
  155. // 500-600 reserved
  156. dbiVersion = 666,
  157. };
  158. } // namespace details
  159. } // namespace Storage