MCPcopy Create free account
hub / github.com/TDesktop-x64/tdesktop / processChat

Method processChat

Telegram/SourceFiles/data/data_session.cpp:849–1209  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

847}
848
849not_null<PeerData*> Session::processChat(const MTPChat &data) {
850 const auto result = data.match([&](const MTPDchat &data) {
851 return peer(peerFromChat(data.vid().v));
852 }, [&](const MTPDchatForbidden &data) {
853 return peer(peerFromChat(data.vid().v));
854 }, [&](const MTPDchatEmpty &data) {
855 return peer(peerFromChat(data.vid().v));
856 }, [&](const MTPDchannel &data) {
857 return peer(peerFromChannel(data.vid().v));
858 }, [&](const MTPDchannelForbidden &data) {
859 return peer(peerFromChannel(data.vid().v));
860 });
861 auto minimal = false;
862
863 using UpdateFlag = Data::PeerUpdate::Flag;
864 auto flags = UpdateFlag::None | UpdateFlag::None;
865 data.match([&](const MTPDchat &data) {
866 const auto chat = result->asChat();
867
868 const auto canAddMembers = chat->canAddMembers();
869 if (chat->version() < data.vversion().v) {
870 chat->setVersion(data.vversion().v);
871 chat->invalidateParticipants();
872 }
873
874 chat->setName(qs(data.vtitle()));
875 chat->setPhoto(data.vphoto());
876 chat->date = data.vdate().v;
877
878 if (const auto rights = data.vadmin_rights()) {
879 chat->setAdminRights(ChatAdminRightsInfo(*rights).flags);
880 } else {
881 chat->setAdminRights(ChatAdminRights());
882 }
883 if (const auto rights = data.vdefault_banned_rights()) {
884 chat->setDefaultRestrictions(ChatRestrictionsInfo(*rights).flags);
885 } else {
886 chat->setDefaultRestrictions(ChatRestrictions());
887 }
888
889 if (const auto migratedTo = data.vmigrated_to()) {
890 migratedTo->match([&](const MTPDinputChannel &input) {
891 const auto channel = this->channel(input.vchannel_id().v);
892 channel->addFlags(ChannelDataFlag::Megagroup);
893 if (!channel->accessHash()) {
894 channel->setAccessHash(input.vaccess_hash().v);
895 }
896 ApplyMigration(chat, channel);
897 }, [](const MTPDinputChannelFromMessage &) {
898 LOG(("API Error: "
899 "migrated_to contains channel from message."));
900 }, [](const MTPDinputChannelEmpty &) {
901 });
902 }
903
904 using Flag = ChatDataFlag;
905 const auto flagsMask = Flag::Left
906 | Flag::Creator

Callers 12

prepareMethod · 0.80
prepareMethod · 0.80
markForbiddenMethod · 0.80
AppendBlockFunction · 0.80
ParseSimilarChannelsFunction · 0.80
CheckChatInviteFunction · 0.80
ResolveRecipientsFunction · 0.80
prepareMethod · 0.80
loadMoreRowsMethod · 0.80
loadCommonGroupsMethod · 0.80

Calls 15

channelMethod · 0.95
peerFromChatFunction · 0.85
peerFromChannelFunction · 0.85
qsFunction · 0.85
ApplyMigrationFunction · 0.85
ChannelHasActiveCallFunction · 0.85
EmojiStatusIdClass · 0.85
PeerSourceStateClass · 0.85
asChatMethod · 0.80
setVersionMethod · 0.80
asChannelMethod · 0.80

Tested by

no test coverage detected