mtproto_config.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. namespace MTP {
  10. struct ConfigFields {
  11. explicit ConfigFields(Environment environment);
  12. int chatSizeMax = 200;
  13. int megagroupSizeMax = 10000;
  14. int forwardedCountMax = 100;
  15. int onlineUpdatePeriod = 120000;
  16. int offlineBlurTimeout = 5000;
  17. int offlineIdleTimeout = 30000;
  18. int onlineFocusTimeout = 1000; // Not from the server config.
  19. int onlineCloudTimeout = 300000;
  20. int notifyCloudDelay = 30000;
  21. int notifyDefaultDelay = 1500;
  22. int editTimeLimit = 172800;
  23. int revokeTimeLimit = 172800;
  24. int revokePrivateTimeLimit = 172800;
  25. bool revokePrivateInbox = false;
  26. int stickersRecentLimit = 30;
  27. QString internalLinksDomain = u"https://t.me/"_q;
  28. int channelsReadMediaPeriod = 86400 * 7;
  29. int callReceiveTimeoutMs = 20000;
  30. int callRingTimeoutMs = 90000;
  31. int callConnectTimeoutMs = 30000;
  32. int callPacketTimeoutMs = 10000;
  33. int webFileDcId = 4;
  34. QString txtDomainString;
  35. bool blockedMode = false;
  36. int captionLengthMax = 1024;
  37. int ratingDecay = 2419200;
  38. QString reactionDefaultEmoji;
  39. uint64 reactionDefaultCustom = 0;
  40. QString autologinToken;
  41. QString gifSearchUsername;
  42. QString venueSearchUsername;
  43. };
  44. class Config final {
  45. struct PrivateTag {
  46. };
  47. public:
  48. explicit Config(Environment environment);
  49. Config(const Config &other);
  50. [[nodiscard]] QByteArray serialize() const;
  51. [[nodiscard]] static std::unique_ptr<Config> FromSerialized(
  52. const QByteArray &serialized);
  53. [[nodiscard]] DcOptions &dcOptions() {
  54. return _dcOptions;
  55. }
  56. [[nodiscard]] const DcOptions &dcOptions() const {
  57. return _dcOptions;
  58. }
  59. [[nodiscard]] MTP::Environment environment() const {
  60. return _dcOptions.environment();
  61. }
  62. [[nodiscard]] bool isTestMode() const {
  63. return _dcOptions.isTestMode();
  64. }
  65. void apply(const MTPDconfig &data);
  66. [[nodiscard]] const ConfigFields &values() const;
  67. [[nodiscard]] rpl::producer<> updates() const;
  68. // Set from legacy local stored values.
  69. void setChatSizeMax(int value);
  70. void setStickersRecentLimit(int value);
  71. void setMegagroupSizeMax(int value);
  72. void setTxtDomainString(const QString &value);
  73. private:
  74. DcOptions _dcOptions;
  75. ConfigFields _fields;
  76. rpl::event_stream<> _updates;
  77. };
  78. } // namespace MTP