diff --git a/Telegram/SourceFiles/localstorage.cpp b/Telegram/SourceFiles/localstorage.cpp index fc1fa6764e..c4864dd6e3 100644 --- a/Telegram/SourceFiles/localstorage.cpp +++ b/Telegram/SourceFiles/localstorage.cpp @@ -734,6 +734,14 @@ namespace { cSetMaxGroupCount(maxSize); } break; + case dbiMaxMegaGroupCount: { + qint32 maxSize; + stream >> maxSize; + if (!_checkStreamStatus(stream)) return false; + + cSetMaxMegaGroupCount(maxSize); + } break; + case dbiUser: { quint32 dcId; qint32 uid; @@ -1971,6 +1979,7 @@ namespace Local { EncryptedDescriptor data(size); data.stream << quint32(dbiMaxGroupCount) << qint32(cMaxGroupCount()); + data.stream << quint32(dbiMaxMegaGroupCount) << qint32(cMaxMegaGroupCount()); data.stream << quint32(dbiAutoStart) << qint32(cAutoStart()); data.stream << quint32(dbiStartMinimized) << qint32(cStartMinimized()); data.stream << quint32(dbiSendToMenu) << qint32(cSendToMenu()); diff --git a/Telegram/SourceFiles/mtproto/mtpDC.cpp b/Telegram/SourceFiles/mtproto/mtpDC.cpp index 57d5150092..700bd3caa3 100644 --- a/Telegram/SourceFiles/mtproto/mtpDC.cpp +++ b/Telegram/SourceFiles/mtproto/mtpDC.cpp @@ -153,6 +153,7 @@ namespace { mtpUpdateDcOptions(data.vdc_options.c_vector().v); cSetMaxGroupCount(data.vchat_size_max.v); + cSetMaxMegaGroupCount(data.vmegagroup_size_max.v); configLoadedOnce = true; Local::writeSettings(); diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.cpp b/Telegram/SourceFiles/mtproto/mtpScheme.cpp index 3e4bb78ddd..729537438b 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.cpp +++ b/Telegram/SourceFiles/mtproto/mtpScheme.cpp @@ -1217,12 +1217,13 @@ void _serialize_chat(MTPStringLogger &to, int32 stage, int32 lev, Types &types, case 3: to.add(" left: "); ++stages.back(); if (flag & MTPDchat::flag_left) { to.add("YES [ BY BIT 2 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 2 IN FIELD flags ]"); } break; case 4: to.add(" admins_enabled: "); ++stages.back(); if (flag & MTPDchat::flag_admins_enabled) { to.add("YES [ BY BIT 3 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 3 IN FIELD flags ]"); } break; case 5: to.add(" admin: "); ++stages.back(); if (flag & MTPDchat::flag_admin) { to.add("YES [ BY BIT 4 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 4 IN FIELD flags ]"); } break; - case 6: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 7: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 8: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 9: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 10: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 11: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 6: to.add(" deactivated: "); ++stages.back(); if (flag & MTPDchat::flag_deactivated) { to.add("YES [ BY BIT 5 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 5 IN FIELD flags ]"); } break; + case 7: to.add(" id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 8: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 9: to.add(" photo: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 10: to.add(" participants_count: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 11: to.add(" date: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 12: to.add(" version: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; } } @@ -1703,6 +1704,41 @@ void _serialize_messageActionChannelCreate(MTPStringLogger &to, int32 stage, int } } +void _serialize_messageActionChatMigrateTo(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChatMigrateTo"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" channel_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + +void _serialize_messageActionChatDeactivate(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ messageActionChatDeactivate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + +void _serialize_messageActionChatActivate(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + to.add("{ messageActionChatActivate }"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); +} + +void _serialize_messageActionChannelMigrateFrom(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messageActionChannelMigrateFrom"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 1: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_dialog(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -3220,7 +3256,7 @@ void _serialize_config(MTPStringLogger &to, int32 stage, int32 lev, Types &types case 3: to.add(" this_dc: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 4: to.add(" dc_options: "); ++stages.back(); types.push_back(00); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 5: to.add(" chat_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; - case 6: to.add(" broadcast_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 6: to.add(" megagroup_size_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 7: to.add(" forwarded_count_max: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 8: to.add(" online_update_period_ms: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; case 9: to.add(" offline_blur_timeout_ms: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; @@ -4293,7 +4329,8 @@ void _serialize_chatInvite(MTPStringLogger &to, int32 stage, int32 lev, Types &t case 1: to.add(" channel: "); ++stages.back(); if (flag & MTPDchatInvite::flag_channel) { to.add("YES [ BY BIT 0 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 0 IN FIELD flags ]"); } break; case 2: to.add(" broadcast: "); ++stages.back(); if (flag & MTPDchatInvite::flag_broadcast) { to.add("YES [ BY BIT 1 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 1 IN FIELD flags ]"); } break; case 3: to.add(" public: "); ++stages.back(); if (flag & MTPDchatInvite::flag_public) { to.add("YES [ BY BIT 2 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 2 IN FIELD flags ]"); } break; - case 4: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 4: to.add(" megagroup: "); ++stages.back(); if (flag & MTPDchatInvite::flag_megagroup) { to.add("YES [ BY BIT 3 IN FIELD flags ]"); } else { to.add("[ SKIPPED BY BIT 3 IN FIELD flags ]"); } break; + case 5: to.add(" title: "); ++stages.back(); types.push_back(mtpc_string); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; } } @@ -6448,6 +6485,33 @@ void _serialize_messages_toggleChatAdmins(MTPStringLogger &to, int32 stage, int3 } } +void _serialize_messages_deactivateChat(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_deactivateChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + case 1: to.add(" enabled: "); ++stages.back(); types.push_back(0); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + +void _serialize_messages_migrateChat(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { + if (stage) { + to.add(",\n").addSpaces(lev); + } else { + to.add("{ messages_migrateChat"); + to.add("\n").addSpaces(lev); + } + switch (stage) { + case 0: to.add(" chat_id: "); ++stages.back(); types.push_back(mtpc_int); vtypes.push_back(0); stages.push_back(0); flags.push_back(0); break; + default: to.add("}"); types.pop_back(); vtypes.pop_back(); stages.pop_back(); flags.pop_back(); break; + } +} + void _serialize_channels_createChannel(MTPStringLogger &to, int32 stage, int32 lev, Types &types, Types &vtypes, StagesFlags &stages, StagesFlags &flags, const mtpPrime *start, const mtpPrime *end, int32 flag) { if (stage) { to.add(",\n").addSpaces(lev); @@ -7204,6 +7268,10 @@ namespace { _serializers.insert(mtpc_messageActionChatDeleteUser, _serialize_messageActionChatDeleteUser); _serializers.insert(mtpc_messageActionChatJoinedByLink, _serialize_messageActionChatJoinedByLink); _serializers.insert(mtpc_messageActionChannelCreate, _serialize_messageActionChannelCreate); + _serializers.insert(mtpc_messageActionChatMigrateTo, _serialize_messageActionChatMigrateTo); + _serializers.insert(mtpc_messageActionChatDeactivate, _serialize_messageActionChatDeactivate); + _serializers.insert(mtpc_messageActionChatActivate, _serialize_messageActionChatActivate); + _serializers.insert(mtpc_messageActionChannelMigrateFrom, _serialize_messageActionChannelMigrateFrom); _serializers.insert(mtpc_dialog, _serialize_dialog); _serializers.insert(mtpc_dialogChannel, _serialize_dialogChannel); _serializers.insert(mtpc_photoEmpty, _serialize_photoEmpty); @@ -7577,6 +7645,8 @@ namespace { _serializers.insert(mtpc_messages_importChatInvite, _serialize_messages_importChatInvite); _serializers.insert(mtpc_messages_startBot, _serialize_messages_startBot); _serializers.insert(mtpc_messages_toggleChatAdmins, _serialize_messages_toggleChatAdmins); + _serializers.insert(mtpc_messages_deactivateChat, _serialize_messages_deactivateChat); + _serializers.insert(mtpc_messages_migrateChat, _serialize_messages_migrateChat); _serializers.insert(mtpc_channels_createChannel, _serialize_channels_createChannel); _serializers.insert(mtpc_channels_editTitle, _serialize_channels_editTitle); _serializers.insert(mtpc_channels_editPhoto, _serialize_channels_editPhoto); diff --git a/Telegram/SourceFiles/mtproto/mtpScheme.h b/Telegram/SourceFiles/mtproto/mtpScheme.h index dd639e7d53..efe13d7884 100644 --- a/Telegram/SourceFiles/mtproto/mtpScheme.h +++ b/Telegram/SourceFiles/mtproto/mtpScheme.h @@ -174,6 +174,10 @@ enum { mtpc_messageActionChatDeleteUser = 0xb2ae9b0c, mtpc_messageActionChatJoinedByLink = 0xf89cf5e8, mtpc_messageActionChannelCreate = 0x95d2ac92, + mtpc_messageActionChatMigrateTo = 0x51bdb021, + mtpc_messageActionChatDeactivate = 0x64ad20a8, + mtpc_messageActionChatActivate = 0x40ad8cb2, + mtpc_messageActionChannelMigrateFrom = 0xb055eaee, mtpc_dialog = 0xc1dd804a, mtpc_dialogChannel = 0x5b8496b2, mtpc_photoEmpty = 0x2331b22d, @@ -286,7 +290,7 @@ enum { mtpc_photos_photo = 0x20212ca8, mtpc_upload_file = 0x96a18d5, mtpc_dcOption = 0x5d8c6cc, - mtpc_config = 0x4e32b894, + mtpc_config = 0x6cb6e65e, mtpc_nearestDc = 0x8e1a1775, mtpc_help_appUpdate = 0x8987f311, mtpc_help_noAppUpdate = 0xc45a6536, @@ -538,6 +542,8 @@ enum { mtpc_messages_getMessagesViews = 0xc4c8a55d, mtpc_messages_toggleChatAdmins = 0xec8bd9e1, mtpc_messages_editChatAdmin = 0xa9e69f2e, + mtpc_messages_deactivateChat = 0x626f0b41, + mtpc_messages_migrateChat = 0x15a3b8e3, mtpc_updates_getState = 0xedd4882a, mtpc_updates_getDifference = 0xa041495, mtpc_updates_getChannelDifference = 0xbb32d7c0, @@ -785,6 +791,8 @@ class MTPDmessageActionChatAddUser; class MTPDmessageActionChatDeleteUser; class MTPDmessageActionChatJoinedByLink; class MTPDmessageActionChannelCreate; +class MTPDmessageActionChatMigrateTo; +class MTPDmessageActionChannelMigrateFrom; class MTPdialog; class MTPDdialog; @@ -3827,6 +3835,30 @@ public: return *(const MTPDmessageActionChannelCreate*)data; } + MTPDmessageActionChatMigrateTo &_messageActionChatMigrateTo() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_messageActionChatMigrateTo) throw mtpErrorWrongTypeId(_type, mtpc_messageActionChatMigrateTo); + split(); + return *(MTPDmessageActionChatMigrateTo*)data; + } + const MTPDmessageActionChatMigrateTo &c_messageActionChatMigrateTo() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_messageActionChatMigrateTo) throw mtpErrorWrongTypeId(_type, mtpc_messageActionChatMigrateTo); + return *(const MTPDmessageActionChatMigrateTo*)data; + } + + MTPDmessageActionChannelMigrateFrom &_messageActionChannelMigrateFrom() { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_messageActionChannelMigrateFrom) throw mtpErrorWrongTypeId(_type, mtpc_messageActionChannelMigrateFrom); + split(); + return *(MTPDmessageActionChannelMigrateFrom*)data; + } + const MTPDmessageActionChannelMigrateFrom &c_messageActionChannelMigrateFrom() const { + if (!data) throw mtpErrorUninitialized(); + if (_type != mtpc_messageActionChannelMigrateFrom) throw mtpErrorWrongTypeId(_type, mtpc_messageActionChannelMigrateFrom); + return *(const MTPDmessageActionChannelMigrateFrom*)data; + } + uint32 innerLength() const; mtpTypeId type() const; void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons); @@ -3843,6 +3875,8 @@ private: explicit MTPmessageAction(MTPDmessageActionChatDeleteUser *_data); explicit MTPmessageAction(MTPDmessageActionChatJoinedByLink *_data); explicit MTPmessageAction(MTPDmessageActionChannelCreate *_data); + explicit MTPmessageAction(MTPDmessageActionChatMigrateTo *_data); + explicit MTPmessageAction(MTPDmessageActionChannelMigrateFrom *_data); friend MTPmessageAction MTP_messageActionEmpty(); friend MTPmessageAction MTP_messageActionChatCreate(const MTPstring &_title, const MTPVector &_users); @@ -3853,6 +3887,10 @@ private: friend MTPmessageAction MTP_messageActionChatDeleteUser(MTPint _user_id); friend MTPmessageAction MTP_messageActionChatJoinedByLink(MTPint _inviter_id); friend MTPmessageAction MTP_messageActionChannelCreate(const MTPstring &_title); + friend MTPmessageAction MTP_messageActionChatMigrateTo(MTPint _channel_id); + friend MTPmessageAction MTP_messageActionChatDeactivate(); + friend MTPmessageAction MTP_messageActionChatActivate(); + friend MTPmessageAction MTP_messageActionChannelMigrateFrom(const MTPstring &_title, MTPint _chat_id); mtpTypeId _type; }; @@ -5993,7 +6031,7 @@ public: private: explicit MTPconfig(MTPDconfig *_data); - friend MTPconfig MTP_config(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _broadcast_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features); + friend MTPconfig MTP_config(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _megagroup_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features); }; typedef MTPBoxed MTPConfig; @@ -9640,6 +9678,7 @@ public: flag_left = (1 << 2), flag_admins_enabled = (1 << 3), flag_admin = (1 << 4), + flag_deactivated = (1 << 5), }; bool is_creator() const { return vflags.v & flag_creator; } @@ -9647,6 +9686,7 @@ public: bool is_left() const { return vflags.v & flag_left; } bool is_admins_enabled() const { return vflags.v & flag_admins_enabled; } bool is_admin() const { return vflags.v & flag_admin; } + bool is_deactivated() const { return vflags.v & flag_deactivated; } }; class MTPDchatForbidden : public mtpDataImpl { @@ -10083,6 +10123,27 @@ public: MTPstring vtitle; }; +class MTPDmessageActionChatMigrateTo : public mtpDataImpl { +public: + MTPDmessageActionChatMigrateTo() { + } + MTPDmessageActionChatMigrateTo(MTPint _channel_id) : vchannel_id(_channel_id) { + } + + MTPint vchannel_id; +}; + +class MTPDmessageActionChannelMigrateFrom : public mtpDataImpl { +public: + MTPDmessageActionChannelMigrateFrom() { + } + MTPDmessageActionChannelMigrateFrom(const MTPstring &_title, MTPint _chat_id) : vtitle(_title), vchat_id(_chat_id) { + } + + MTPstring vtitle; + MTPint vchat_id; +}; + class MTPDdialog : public mtpDataImpl { public: MTPDdialog() { @@ -11288,7 +11349,7 @@ class MTPDconfig : public mtpDataImpl { public: MTPDconfig() { } - MTPDconfig(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _broadcast_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features) : vdate(_date), vexpires(_expires), vtest_mode(_test_mode), vthis_dc(_this_dc), vdc_options(_dc_options), vchat_size_max(_chat_size_max), vbroadcast_size_max(_broadcast_size_max), vforwarded_count_max(_forwarded_count_max), vonline_update_period_ms(_online_update_period_ms), voffline_blur_timeout_ms(_offline_blur_timeout_ms), voffline_idle_timeout_ms(_offline_idle_timeout_ms), vonline_cloud_timeout_ms(_online_cloud_timeout_ms), vnotify_cloud_delay_ms(_notify_cloud_delay_ms), vnotify_default_delay_ms(_notify_default_delay_ms), vchat_big_size(_chat_big_size), vpush_chat_period_ms(_push_chat_period_ms), vpush_chat_limit(_push_chat_limit), vdisabled_features(_disabled_features) { + MTPDconfig(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _megagroup_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features) : vdate(_date), vexpires(_expires), vtest_mode(_test_mode), vthis_dc(_this_dc), vdc_options(_dc_options), vchat_size_max(_chat_size_max), vmegagroup_size_max(_megagroup_size_max), vforwarded_count_max(_forwarded_count_max), vonline_update_period_ms(_online_update_period_ms), voffline_blur_timeout_ms(_offline_blur_timeout_ms), voffline_idle_timeout_ms(_offline_idle_timeout_ms), vonline_cloud_timeout_ms(_online_cloud_timeout_ms), vnotify_cloud_delay_ms(_notify_cloud_delay_ms), vnotify_default_delay_ms(_notify_default_delay_ms), vchat_big_size(_chat_big_size), vpush_chat_period_ms(_push_chat_period_ms), vpush_chat_limit(_push_chat_limit), vdisabled_features(_disabled_features) { } MTPint vdate; @@ -11297,7 +11358,7 @@ public: MTPint vthis_dc; MTPVector vdc_options; MTPint vchat_size_max; - MTPint vbroadcast_size_max; + MTPint vmegagroup_size_max; MTPint vforwarded_count_max; MTPint vonline_update_period_ms; MTPint voffline_blur_timeout_ms; @@ -12096,11 +12157,13 @@ public: flag_channel = (1 << 0), flag_broadcast = (1 << 1), flag_public = (1 << 2), + flag_megagroup = (1 << 3), }; bool is_channel() const { return vflags.v & flag_channel; } bool is_broadcast() const { return vflags.v & flag_broadcast; } bool is_public() const { return vflags.v & flag_public; } + bool is_megagroup() const { return vflags.v & flag_megagroup; } }; class MTPDinputStickerSetID : public mtpDataImpl { @@ -17396,6 +17459,87 @@ public: } }; +class MTPmessages_deactivateChat { // RPC method 'messages.deactivateChat' +public: + MTPint vchat_id; + MTPBool venabled; + + MTPmessages_deactivateChat() { + } + MTPmessages_deactivateChat(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_deactivateChat) { + read(from, end, cons); + } + MTPmessages_deactivateChat(MTPint _chat_id, MTPBool _enabled) : vchat_id(_chat_id), venabled(_enabled) { + } + + uint32 innerLength() const { + return vchat_id.innerLength() + venabled.innerLength(); + } + mtpTypeId type() const { + return mtpc_messages_deactivateChat; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_deactivateChat) { + vchat_id.read(from, end); + venabled.read(from, end); + } + void write(mtpBuffer &to) const { + vchat_id.write(to); + venabled.write(to); + } + + typedef MTPUpdates ResponseType; +}; +class MTPmessages_DeactivateChat : public MTPBoxed { +public: + MTPmessages_DeactivateChat() { + } + MTPmessages_DeactivateChat(const MTPmessages_deactivateChat &v) : MTPBoxed(v) { + } + MTPmessages_DeactivateChat(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPmessages_DeactivateChat(MTPint _chat_id, MTPBool _enabled) : MTPBoxed(MTPmessages_deactivateChat(_chat_id, _enabled)) { + } +}; + +class MTPmessages_migrateChat { // RPC method 'messages.migrateChat' +public: + MTPint vchat_id; + + MTPmessages_migrateChat() { + } + MTPmessages_migrateChat(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_migrateChat) { + read(from, end, cons); + } + MTPmessages_migrateChat(MTPint _chat_id) : vchat_id(_chat_id) { + } + + uint32 innerLength() const { + return vchat_id.innerLength(); + } + mtpTypeId type() const { + return mtpc_messages_migrateChat; + } + void read(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = mtpc_messages_migrateChat) { + vchat_id.read(from, end); + } + void write(mtpBuffer &to) const { + vchat_id.write(to); + } + + typedef MTPUpdates ResponseType; +}; +class MTPmessages_MigrateChat : public MTPBoxed { +public: + MTPmessages_MigrateChat() { + } + MTPmessages_MigrateChat(const MTPmessages_migrateChat &v) : MTPBoxed(v) { + } + MTPmessages_MigrateChat(const mtpPrime *&from, const mtpPrime *end, mtpTypeId cons = 0) : MTPBoxed(from, end, cons) { + } + MTPmessages_MigrateChat(MTPint _chat_id) : MTPBoxed(MTPmessages_migrateChat(_chat_id)) { + } +}; + class MTPupdates_getState { // RPC method 'updates.getState' public: MTPupdates_getState() { @@ -22442,6 +22586,14 @@ inline uint32 MTPmessageAction::innerLength() const { const MTPDmessageActionChannelCreate &v(c_messageActionChannelCreate()); return v.vtitle.innerLength(); } + case mtpc_messageActionChatMigrateTo: { + const MTPDmessageActionChatMigrateTo &v(c_messageActionChatMigrateTo()); + return v.vchannel_id.innerLength(); + } + case mtpc_messageActionChannelMigrateFrom: { + const MTPDmessageActionChannelMigrateFrom &v(c_messageActionChannelMigrateFrom()); + return v.vtitle.innerLength() + v.vchat_id.innerLength(); + } } return 0; } @@ -22490,6 +22642,19 @@ inline void MTPmessageAction::read(const mtpPrime *&from, const mtpPrime *end, m MTPDmessageActionChannelCreate &v(_messageActionChannelCreate()); v.vtitle.read(from, end); } break; + case mtpc_messageActionChatMigrateTo: _type = cons; { + if (!data) setData(new MTPDmessageActionChatMigrateTo()); + MTPDmessageActionChatMigrateTo &v(_messageActionChatMigrateTo()); + v.vchannel_id.read(from, end); + } break; + case mtpc_messageActionChatDeactivate: _type = cons; break; + case mtpc_messageActionChatActivate: _type = cons; break; + case mtpc_messageActionChannelMigrateFrom: _type = cons; { + if (!data) setData(new MTPDmessageActionChannelMigrateFrom()); + MTPDmessageActionChannelMigrateFrom &v(_messageActionChannelMigrateFrom()); + v.vtitle.read(from, end); + v.vchat_id.read(from, end); + } break; default: throw mtpErrorUnexpected(cons, "MTPmessageAction"); } } @@ -22524,6 +22689,15 @@ inline void MTPmessageAction::write(mtpBuffer &to) const { const MTPDmessageActionChannelCreate &v(c_messageActionChannelCreate()); v.vtitle.write(to); } break; + case mtpc_messageActionChatMigrateTo: { + const MTPDmessageActionChatMigrateTo &v(c_messageActionChatMigrateTo()); + v.vchannel_id.write(to); + } break; + case mtpc_messageActionChannelMigrateFrom: { + const MTPDmessageActionChannelMigrateFrom &v(c_messageActionChannelMigrateFrom()); + v.vtitle.write(to); + v.vchat_id.write(to); + } break; } } inline MTPmessageAction::MTPmessageAction(mtpTypeId type) : mtpDataOwner(0), _type(type) { @@ -22537,6 +22711,10 @@ inline MTPmessageAction::MTPmessageAction(mtpTypeId type) : mtpDataOwner(0), _ty case mtpc_messageActionChatDeleteUser: setData(new MTPDmessageActionChatDeleteUser()); break; case mtpc_messageActionChatJoinedByLink: setData(new MTPDmessageActionChatJoinedByLink()); break; case mtpc_messageActionChannelCreate: setData(new MTPDmessageActionChannelCreate()); break; + case mtpc_messageActionChatMigrateTo: setData(new MTPDmessageActionChatMigrateTo()); break; + case mtpc_messageActionChatDeactivate: break; + case mtpc_messageActionChatActivate: break; + case mtpc_messageActionChannelMigrateFrom: setData(new MTPDmessageActionChannelMigrateFrom()); break; default: throw mtpErrorBadTypeId(type, "MTPmessageAction"); } } @@ -22554,6 +22732,10 @@ inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatJoinedByLink *_da } inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChannelCreate *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChannelCreate) { } +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChatMigrateTo *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChatMigrateTo) { +} +inline MTPmessageAction::MTPmessageAction(MTPDmessageActionChannelMigrateFrom *_data) : mtpDataOwner(_data), _type(mtpc_messageActionChannelMigrateFrom) { +} inline MTPmessageAction MTP_messageActionEmpty() { return MTPmessageAction(mtpc_messageActionEmpty); } @@ -22581,6 +22763,18 @@ inline MTPmessageAction MTP_messageActionChatJoinedByLink(MTPint _inviter_id) { inline MTPmessageAction MTP_messageActionChannelCreate(const MTPstring &_title) { return MTPmessageAction(new MTPDmessageActionChannelCreate(_title)); } +inline MTPmessageAction MTP_messageActionChatMigrateTo(MTPint _channel_id) { + return MTPmessageAction(new MTPDmessageActionChatMigrateTo(_channel_id)); +} +inline MTPmessageAction MTP_messageActionChatDeactivate() { + return MTPmessageAction(mtpc_messageActionChatDeactivate); +} +inline MTPmessageAction MTP_messageActionChatActivate() { + return MTPmessageAction(mtpc_messageActionChatActivate); +} +inline MTPmessageAction MTP_messageActionChannelMigrateFrom(const MTPstring &_title, MTPint _chat_id) { + return MTPmessageAction(new MTPDmessageActionChannelMigrateFrom(_title, _chat_id)); +} inline uint32 MTPdialog::innerLength() const { switch (_type) { @@ -25516,7 +25710,7 @@ inline MTPconfig::MTPconfig() : mtpDataOwner(new MTPDconfig()) { inline uint32 MTPconfig::innerLength() const { const MTPDconfig &v(c_config()); - return v.vdate.innerLength() + v.vexpires.innerLength() + v.vtest_mode.innerLength() + v.vthis_dc.innerLength() + v.vdc_options.innerLength() + v.vchat_size_max.innerLength() + v.vbroadcast_size_max.innerLength() + v.vforwarded_count_max.innerLength() + v.vonline_update_period_ms.innerLength() + v.voffline_blur_timeout_ms.innerLength() + v.voffline_idle_timeout_ms.innerLength() + v.vonline_cloud_timeout_ms.innerLength() + v.vnotify_cloud_delay_ms.innerLength() + v.vnotify_default_delay_ms.innerLength() + v.vchat_big_size.innerLength() + v.vpush_chat_period_ms.innerLength() + v.vpush_chat_limit.innerLength() + v.vdisabled_features.innerLength(); + return v.vdate.innerLength() + v.vexpires.innerLength() + v.vtest_mode.innerLength() + v.vthis_dc.innerLength() + v.vdc_options.innerLength() + v.vchat_size_max.innerLength() + v.vmegagroup_size_max.innerLength() + v.vforwarded_count_max.innerLength() + v.vonline_update_period_ms.innerLength() + v.voffline_blur_timeout_ms.innerLength() + v.voffline_idle_timeout_ms.innerLength() + v.vonline_cloud_timeout_ms.innerLength() + v.vnotify_cloud_delay_ms.innerLength() + v.vnotify_default_delay_ms.innerLength() + v.vchat_big_size.innerLength() + v.vpush_chat_period_ms.innerLength() + v.vpush_chat_limit.innerLength() + v.vdisabled_features.innerLength(); } inline mtpTypeId MTPconfig::type() const { return mtpc_config; @@ -25532,7 +25726,7 @@ inline void MTPconfig::read(const mtpPrime *&from, const mtpPrime *end, mtpTypeI v.vthis_dc.read(from, end); v.vdc_options.read(from, end); v.vchat_size_max.read(from, end); - v.vbroadcast_size_max.read(from, end); + v.vmegagroup_size_max.read(from, end); v.vforwarded_count_max.read(from, end); v.vonline_update_period_ms.read(from, end); v.voffline_blur_timeout_ms.read(from, end); @@ -25553,7 +25747,7 @@ inline void MTPconfig::write(mtpBuffer &to) const { v.vthis_dc.write(to); v.vdc_options.write(to); v.vchat_size_max.write(to); - v.vbroadcast_size_max.write(to); + v.vmegagroup_size_max.write(to); v.vforwarded_count_max.write(to); v.vonline_update_period_ms.write(to); v.voffline_blur_timeout_ms.write(to); @@ -25568,8 +25762,8 @@ inline void MTPconfig::write(mtpBuffer &to) const { } inline MTPconfig::MTPconfig(MTPDconfig *_data) : mtpDataOwner(_data) { } -inline MTPconfig MTP_config(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _broadcast_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features) { - return MTPconfig(new MTPDconfig(_date, _expires, _test_mode, _this_dc, _dc_options, _chat_size_max, _broadcast_size_max, _forwarded_count_max, _online_update_period_ms, _offline_blur_timeout_ms, _offline_idle_timeout_ms, _online_cloud_timeout_ms, _notify_cloud_delay_ms, _notify_default_delay_ms, _chat_big_size, _push_chat_period_ms, _push_chat_limit, _disabled_features)); +inline MTPconfig MTP_config(MTPint _date, MTPint _expires, MTPBool _test_mode, MTPint _this_dc, const MTPVector &_dc_options, MTPint _chat_size_max, MTPint _megagroup_size_max, MTPint _forwarded_count_max, MTPint _online_update_period_ms, MTPint _offline_blur_timeout_ms, MTPint _offline_idle_timeout_ms, MTPint _online_cloud_timeout_ms, MTPint _notify_cloud_delay_ms, MTPint _notify_default_delay_ms, MTPint _chat_big_size, MTPint _push_chat_period_ms, MTPint _push_chat_limit, const MTPVector &_disabled_features) { + return MTPconfig(new MTPDconfig(_date, _expires, _test_mode, _this_dc, _dc_options, _chat_size_max, _megagroup_size_max, _forwarded_count_max, _online_update_period_ms, _offline_blur_timeout_ms, _offline_idle_timeout_ms, _online_cloud_timeout_ms, _notify_cloud_delay_ms, _notify_default_delay_ms, _chat_big_size, _push_chat_period_ms, _push_chat_limit, _disabled_features)); } inline MTPnearestDc::MTPnearestDc() : mtpDataOwner(new MTPDnearestDc()) { diff --git a/Telegram/SourceFiles/mtproto/scheme.tl b/Telegram/SourceFiles/mtproto/scheme.tl index 71d13124e8..8ec043b95e 100644 --- a/Telegram/SourceFiles/mtproto/scheme.tl +++ b/Telegram/SourceFiles/mtproto/scheme.tl @@ -216,7 +216,7 @@ userStatusLastWeek#7bf09fc = UserStatus; userStatusLastMonth#77ebc742 = UserStatus; chatEmpty#9ba2d800 id:int = Chat; -chat#7312bc48 flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true admins_enabled:flags.3?true admin:flags.4?true id:int title:string photo:ChatPhoto participants_count:int date:int version:int = Chat; +chat#7312bc48 flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true admins_enabled:flags.3?true admin:flags.4?true deactivated:flags.5?true id:int title:string photo:ChatPhoto participants_count:int date:int version:int = Chat; chatForbidden#7328bdb id:int title:string = Chat; channel#678e9587 flags:# creator:flags.0?true kicked:flags.1?true left:flags.2?true editor:flags.3?true moderator:flags.4?true broadcast:flags.5?true verified:flags.7?true megagroup:flags.8?true id:int access_hash:long title:string username:flags.6?string photo:ChatPhoto date:int version:int = Chat; channelForbidden#2d85832c id:int access_hash:long title:string = Chat; @@ -258,6 +258,10 @@ messageActionChatAddUser#5e3cfc4b user_id:int = MessageAction; messageActionChatDeleteUser#b2ae9b0c user_id:int = MessageAction; messageActionChatJoinedByLink#f89cf5e8 inviter_id:int = MessageAction; messageActionChannelCreate#95d2ac92 title:string = MessageAction; +messageActionChatMigrateTo#51bdb021 channel_id:int = MessageAction; +messageActionChatDeactivate#64ad20a8 = MessageAction; +messageActionChatActivate#40ad8cb2 = MessageAction; +messageActionChannelMigrateFrom#b055eaee title:string chat_id:int = MessageAction; dialog#c1dd804a peer:Peer top_message:int read_inbox_max_id:int unread_count:int notify_settings:PeerNotifySettings = Dialog; dialogChannel#5b8496b2 peer:Peer top_message:int top_important_message:int read_inbox_max_id:int unread_count:int unread_important_count:int notify_settings:PeerNotifySettings pts:int = Dialog; @@ -411,7 +415,7 @@ upload.file#96a18d5 type:storage.FileType mtime:int bytes:bytes = upload.File; dcOption#5d8c6cc flags:# ipv6:flags.0?true media_only:flags.1?true id:int ip_address:string port:int = DcOption; -config#4e32b894 date:int expires:int test_mode:Bool this_dc:int dc_options:Vector chat_size_max:int broadcast_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int chat_big_size:int push_chat_period_ms:int push_chat_limit:int disabled_features:Vector = Config; +config#6cb6e65e date:int expires:int test_mode:Bool this_dc:int dc_options:Vector chat_size_max:int megagroup_size_max:int forwarded_count_max:int online_update_period_ms:int offline_blur_timeout_ms:int offline_idle_timeout_ms:int online_cloud_timeout_ms:int notify_cloud_delay_ms:int notify_default_delay_ms:int chat_big_size:int push_chat_period_ms:int push_chat_limit:int disabled_features:Vector = Config; nearestDc#8e1a1775 country:string this_dc:int nearest_dc:int = NearestDc; @@ -548,7 +552,7 @@ chatInviteEmpty#69df3769 = ExportedChatInvite; chatInviteExported#fc2e05bc link:string = ExportedChatInvite; chatInviteAlready#5a686d7c chat:Chat = ChatInvite; -chatInvite#93e99b60 flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true title:string = ChatInvite; +chatInvite#93e99b60 flags:# channel:flags.0?true broadcast:flags.1?true public:flags.2?true megagroup:flags.3?true title:string = ChatInvite; inputStickerSetEmpty#ffb62b95 = InputStickerSet; inputStickerSetID#9de7a269 id:long access_hash:long = InputStickerSet; @@ -734,6 +738,8 @@ messages.startBot#1b3e0ffc bot:InputUser chat_id:int random_id:long start_param: messages.getMessagesViews#c4c8a55d peer:InputPeer id:Vector increment:Bool = Vector; messages.toggleChatAdmins#ec8bd9e1 chat_id:int enabled:Bool = Updates; messages.editChatAdmin#a9e69f2e chat_id:int user_id:InputUser is_admin:Bool = Bool; +messages.deactivateChat#626f0b41 chat_id:int enabled:Bool = Updates; +messages.migrateChat#15a3b8e3 chat_id:int = Updates; updates.getState#edd4882a = updates.State; updates.getDifference#a041495 pts:int date:int qts:int = updates.Difference; diff --git a/Telegram/SourceFiles/structs.h b/Telegram/SourceFiles/structs.h index d5d1aa23f3..e1ac814e00 100644 --- a/Telegram/SourceFiles/structs.h +++ b/Telegram/SourceFiles/structs.h @@ -418,6 +418,9 @@ public: bool amAdmin() const { return flags & MTPDchat::flag_admin; } + bool isDeactivated() const { + return flags & MTPDchat::flag_deactivated; + } typedef QMap Participants; Participants participants; typedef QMap InvitedByMe; diff --git a/Telegram/SourceFiles/types.h b/Telegram/SourceFiles/types.h index 0d9e7e4884..c93a6746ee 100644 --- a/Telegram/SourceFiles/types.h +++ b/Telegram/SourceFiles/types.h @@ -281,6 +281,7 @@ enum DataBlockId { dbiSongVolume = 0x29, dbiWindowsNotifications = 0x30, dbiIncludeMuted = 0x31, + dbiMaxMegaGroupCount = 0x32, dbiEncryptedWithSalt = 333, dbiEncrypted = 444,