96 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			No EOL
		
	
	
		
			2.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
| This file is part of Telegram Desktop,
 | |
| the official desktop application for the Telegram messaging service.
 | |
| 
 | |
| For license and copyright information please follow this link:
 | |
| https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
 | |
| */
 | |
| #pragma once
 | |
| 
 | |
| #include "mtproto/mtproto_dc_options.h"
 | |
| 
 | |
| namespace MTP {
 | |
| 
 | |
| [[nodiscard]] QString ConfigDefaultReactionEmoji();
 | |
| 
 | |
| struct ConfigFields {
 | |
| 	int chatSizeMax = 200;
 | |
| 	int megagroupSizeMax = 10000;
 | |
| 	int forwardedCountMax = 100;
 | |
| 	int onlineUpdatePeriod = 120000;
 | |
| 	int offlineBlurTimeout = 5000;
 | |
| 	int offlineIdleTimeout = 30000;
 | |
| 	int onlineFocusTimeout = 1000; // Not from the server config.
 | |
| 	int onlineCloudTimeout = 300000;
 | |
| 	int notifyCloudDelay = 30000;
 | |
| 	int notifyDefaultDelay = 1500;
 | |
| 	int savedGifsLimit = 200;
 | |
| 	int editTimeLimit = 172800;
 | |
| 	int revokeTimeLimit = 172800;
 | |
| 	int revokePrivateTimeLimit = 172800;
 | |
| 	bool revokePrivateInbox = false;
 | |
| 	int stickersRecentLimit = 30;
 | |
| 	int stickersFavedLimit = 5;
 | |
| 	rpl::variable<int> pinnedDialogsCountMax = 5;
 | |
| 	rpl::variable<int> pinnedDialogsInFolderMax = 100;
 | |
| 	QString internalLinksDomain = u"https://t.me/"_q;
 | |
| 	int channelsReadMediaPeriod = 86400 * 7;
 | |
| 	int callReceiveTimeoutMs = 20000;
 | |
| 	int callRingTimeoutMs = 90000;
 | |
| 	int callConnectTimeoutMs = 30000;
 | |
| 	int callPacketTimeoutMs = 10000;
 | |
| 	int webFileDcId = 4;
 | |
| 	QString txtDomainString;
 | |
| 	bool blockedMode = false;
 | |
| 	int captionLengthMax = 1024;
 | |
| 	QString reactionDefaultEmoji = ConfigDefaultReactionEmoji();
 | |
| 	uint64 reactionDefaultCustom;
 | |
| };
 | |
| 
 | |
| class Config final {
 | |
| 	struct PrivateTag {
 | |
| 	};
 | |
| 
 | |
| public:
 | |
| 	explicit Config(Environment environment);
 | |
| 	Config(const Config &other);
 | |
| 
 | |
| 	[[nodiscard]] QByteArray serialize() const;
 | |
| 	[[nodiscard]] static std::unique_ptr<Config> FromSerialized(
 | |
| 		const QByteArray &serialized);
 | |
| 
 | |
| 	[[nodiscard]] DcOptions &dcOptions() {
 | |
| 		return _dcOptions;
 | |
| 	}
 | |
| 	[[nodiscard]] const DcOptions &dcOptions() const {
 | |
| 		return _dcOptions;
 | |
| 	}
 | |
| 	[[nodiscard]] MTP::Environment environment() const {
 | |
| 		return _dcOptions.environment();
 | |
| 	}
 | |
| 	[[nodiscard]] bool isTestMode() const {
 | |
| 		return _dcOptions.isTestMode();
 | |
| 	}
 | |
| 
 | |
| 	void apply(const MTPDconfig &data);
 | |
| 
 | |
| 	[[nodiscard]] const ConfigFields &values() const;
 | |
| 	[[nodiscard]] rpl::producer<> updates() const;
 | |
| 
 | |
| 	// Set from legacy local stored values.
 | |
| 	void setChatSizeMax(int value);
 | |
| 	void setSavedGifsLimit(int value);
 | |
| 	void setStickersRecentLimit(int value);
 | |
| 	void setStickersFavedLimit(int value);
 | |
| 	void setMegagroupSizeMax(int value);
 | |
| 	void setTxtDomainString(const QString &value);
 | |
| 
 | |
| private:
 | |
| 	DcOptions _dcOptions;
 | |
| 	ConfigFields _fields;
 | |
| 
 | |
| 	rpl::event_stream<> _updates;
 | |
| 
 | |
| };
 | |
| 
 | |
| } // namespace MTP
 | 
