data_premium_limits.cpp 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301
  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. #include "data/data_premium_limits.h"
  8. #include "main/main_app_config.h"
  9. #include "main/main_session.h"
  10. namespace Data {
  11. PremiumLimits::PremiumLimits(not_null<Main::Session*> session)
  12. : _session(session) {
  13. }
  14. int PremiumLimits::channelsDefault() const {
  15. return appConfigLimit("channels_limit_default", 500);
  16. }
  17. int PremiumLimits::channelsPremium() const {
  18. return appConfigLimit("channels_limit_premium", 1000);
  19. }
  20. int PremiumLimits::channelsCurrent() const {
  21. return isPremium()
  22. ? channelsPremium()
  23. : channelsDefault();
  24. }
  25. int PremiumLimits::similarChannelsDefault() const {
  26. return appConfigLimit("recommended_channels_limit_default", 10);
  27. }
  28. int PremiumLimits::similarChannelsPremium() const {
  29. return appConfigLimit("recommended_channels_limit_premium", 100);
  30. }
  31. int PremiumLimits::similarChannelsCurrent() const {
  32. return isPremium()
  33. ? channelsPremium()
  34. : channelsDefault();
  35. }
  36. int PremiumLimits::gifsDefault() const {
  37. return appConfigLimit("saved_gifs_limit_default", 200);
  38. }
  39. int PremiumLimits::gifsPremium() const {
  40. return appConfigLimit("saved_gifs_limit_premium", 400);
  41. }
  42. int PremiumLimits::gifsCurrent() const {
  43. return isPremium()
  44. ? gifsPremium()
  45. : gifsDefault();
  46. }
  47. int PremiumLimits::stickersFavedDefault() const {
  48. return appConfigLimit("stickers_faved_limit_default", 5);
  49. }
  50. int PremiumLimits::stickersFavedPremium() const {
  51. return appConfigLimit("stickers_faved_limit_premium", 10);
  52. }
  53. int PremiumLimits::stickersFavedCurrent() const {
  54. return isPremium()
  55. ? stickersFavedPremium()
  56. : stickersFavedDefault();
  57. }
  58. int PremiumLimits::dialogFiltersDefault() const {
  59. return appConfigLimit("dialog_filters_limit_default", 10);
  60. }
  61. int PremiumLimits::dialogFiltersPremium() const {
  62. return appConfigLimit("dialog_filters_limit_premium", 20);
  63. }
  64. int PremiumLimits::dialogFiltersCurrent() const {
  65. return isPremium()
  66. ? dialogFiltersPremium()
  67. : dialogFiltersDefault();
  68. }
  69. int PremiumLimits::dialogShareableFiltersDefault() const {
  70. return appConfigLimit("chatlists_joined_limit_default", 2);
  71. }
  72. int PremiumLimits::dialogShareableFiltersPremium() const {
  73. return appConfigLimit("chatlists_joined_limit_premium", 20);
  74. }
  75. int PremiumLimits::dialogShareableFiltersCurrent() const {
  76. return isPremium()
  77. ? dialogShareableFiltersPremium()
  78. : dialogShareableFiltersDefault();
  79. }
  80. int PremiumLimits::dialogFiltersChatsDefault() const {
  81. return appConfigLimit("dialog_filters_chats_limit_default", 100);
  82. }
  83. int PremiumLimits::dialogFiltersChatsPremium() const {
  84. return appConfigLimit("dialog_filters_chats_limit_premium", 200);
  85. }
  86. int PremiumLimits::dialogFiltersChatsCurrent() const {
  87. return isPremium()
  88. ? dialogFiltersChatsPremium()
  89. : dialogFiltersChatsDefault();
  90. }
  91. int PremiumLimits::dialogFiltersLinksDefault() const {
  92. return appConfigLimit("chatlist_invites_limit_default", 3);
  93. }
  94. int PremiumLimits::dialogFiltersLinksPremium() const {
  95. return appConfigLimit("chatlist_invites_limit_premium", 20);
  96. }
  97. int PremiumLimits::dialogFiltersLinksCurrent() const {
  98. return isPremium()
  99. ? dialogFiltersLinksPremium()
  100. : dialogFiltersLinksDefault();
  101. }
  102. int PremiumLimits::dialogsPinnedDefault() const {
  103. return appConfigLimit("dialogs_pinned_limit_default", 5);
  104. }
  105. int PremiumLimits::dialogsPinnedPremium() const {
  106. return appConfigLimit("dialogs_pinned_limit_premium", 10);
  107. }
  108. int PremiumLimits::dialogsPinnedCurrent() const {
  109. return isPremium()
  110. ? dialogsPinnedPremium()
  111. : dialogsPinnedDefault();
  112. }
  113. int PremiumLimits::dialogsFolderPinnedDefault() const {
  114. return appConfigLimit("dialogs_folder_pinned_limit_default", 100);
  115. }
  116. int PremiumLimits::dialogsFolderPinnedPremium() const {
  117. return appConfigLimit("dialogs_folder_pinned_limit_premium", 200);
  118. }
  119. int PremiumLimits::dialogsFolderPinnedCurrent() const {
  120. return isPremium()
  121. ? dialogsFolderPinnedPremium()
  122. : dialogsFolderPinnedDefault();
  123. }
  124. int PremiumLimits::topicsPinnedCurrent() const {
  125. return appConfigLimit("topics_pinned_limit", 5);
  126. }
  127. int PremiumLimits::savedSublistsPinnedDefault() const {
  128. return appConfigLimit("saved_dialogs_pinned_limit_default", 5);
  129. }
  130. int PremiumLimits::savedSublistsPinnedPremium() const {
  131. return appConfigLimit("saved_dialogs_pinned_limit_premium", 100);
  132. }
  133. int PremiumLimits::savedSublistsPinnedCurrent() const {
  134. return isPremium()
  135. ? savedSublistsPinnedPremium()
  136. : savedSublistsPinnedDefault();
  137. }
  138. int PremiumLimits::channelsPublicDefault() const {
  139. return appConfigLimit("channels_public_limit_default", 10);
  140. }
  141. int PremiumLimits::channelsPublicPremium() const {
  142. return appConfigLimit("channels_public_limit_premium", 20);
  143. }
  144. int PremiumLimits::channelsPublicCurrent() const {
  145. return isPremium()
  146. ? channelsPublicPremium()
  147. : channelsPublicDefault();
  148. }
  149. int PremiumLimits::captionLengthDefault() const {
  150. return appConfigLimit("caption_length_limit_default", 1024);
  151. }
  152. int PremiumLimits::captionLengthPremium() const {
  153. return appConfigLimit("caption_length_limit_premium", 2048);
  154. }
  155. int PremiumLimits::captionLengthCurrent() const {
  156. return isPremium()
  157. ? captionLengthPremium()
  158. : captionLengthDefault();
  159. }
  160. int PremiumLimits::uploadMaxDefault() const {
  161. return appConfigLimit("upload_max_fileparts_default", 4000);
  162. }
  163. int PremiumLimits::uploadMaxPremium() const {
  164. return appConfigLimit("upload_max_fileparts_premium", 8000);
  165. }
  166. int PremiumLimits::uploadMaxCurrent() const {
  167. return isPremium()
  168. ? uploadMaxPremium()
  169. : uploadMaxDefault();
  170. }
  171. int PremiumLimits::aboutLengthDefault() const {
  172. return appConfigLimit("about_length_limit_default", 70);
  173. }
  174. int PremiumLimits::aboutLengthPremium() const {
  175. return appConfigLimit("about_length_limit_premium", 140);
  176. }
  177. int PremiumLimits::aboutLengthCurrent() const {
  178. return isPremium()
  179. ? aboutLengthPremium()
  180. : aboutLengthDefault();
  181. }
  182. int PremiumLimits::maxBoostLevel() const {
  183. return appConfigLimit(
  184. u"boosts_channel_level_max"_q,
  185. _session->isTestMode() ? 9 : 99);
  186. }
  187. int PremiumLimits::appConfigLimit(
  188. const QString &key,
  189. int fallback) const {
  190. return _session->appConfig().get<int>(key, fallback);
  191. }
  192. bool PremiumLimits::isPremium() const {
  193. return _session->premium();
  194. }
  195. LevelLimits::LevelLimits(not_null<Main::Session*> session)
  196. : _session(session) {
  197. }
  198. int LevelLimits::channelColorLevelMin() const {
  199. return _session->appConfig().get<int>(
  200. u"channel_color_level_min"_q,
  201. 5);
  202. }
  203. int LevelLimits::channelBgIconLevelMin() const {
  204. return _session->appConfig().get<int>(
  205. u"channel_bg_icon_level_min"_q,
  206. 4);
  207. }
  208. int LevelLimits::channelProfileBgIconLevelMin() const {
  209. return _session->appConfig().get<int>(
  210. u"channel_profile_bg_icon_level_min"_q,
  211. 7);
  212. }
  213. int LevelLimits::channelEmojiStatusLevelMin() const {
  214. return _session->appConfig().get<int>(
  215. u"channel_emoji_status_level_min"_q,
  216. 8);
  217. }
  218. int LevelLimits::channelWallpaperLevelMin() const {
  219. return _session->appConfig().get<int>(
  220. u"channel_wallpaper_level_min"_q,
  221. 9);
  222. }
  223. int LevelLimits::channelCustomWallpaperLevelMin() const {
  224. return _session->appConfig().get<int>(
  225. u"channel_custom_wallpaper_level_min"_q,
  226. 10);
  227. }
  228. int LevelLimits::channelRestrictSponsoredLevelMin() const {
  229. return _session->appConfig().get<int>(
  230. u"channel_restrict_sponsored_level_min"_q,
  231. 20);
  232. }
  233. int LevelLimits::groupTranscribeLevelMin() const {
  234. return _session->appConfig().get<int>(
  235. u"group_transcribe_level_min"_q,
  236. 6);
  237. }
  238. int LevelLimits::groupEmojiStickersLevelMin() const {
  239. return _session->appConfig().get<int>(
  240. u"group_emoji_stickers_level_min"_q,
  241. 4);
  242. }
  243. int LevelLimits::groupProfileBgIconLevelMin() const {
  244. return _session->appConfig().get<int>(
  245. u"group_profile_bg_icon_level_min"_q,
  246. 5);
  247. }
  248. int LevelLimits::groupEmojiStatusLevelMin() const {
  249. return _session->appConfig().get<int>(
  250. u"group_emoji_status_level_min"_q,
  251. 8);
  252. }
  253. int LevelLimits::groupWallpaperLevelMin() const {
  254. return _session->appConfig().get<int>(
  255. u"group_wallpaper_level_min"_q,
  256. 9);
  257. }
  258. int LevelLimits::groupCustomWallpaperLevelMin() const {
  259. return _session->appConfig().get<int>(
  260. u"group_custom_wallpaper_level_min"_q,
  261. 10);
  262. }
  263. } // namespace Data