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

Method processUser

Telegram/SourceFiles/data/data_session.cpp:548–847  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

546}
547
548not_null<UserData*> Session::processUser(const MTPUser &data) {
549 const auto result = user(data.match([](const auto &data) {
550 return data.vid().v;
551 }));
552 auto minimal = false;
553 const MTPUserStatus *status = nullptr;
554 const MTPUserStatus emptyStatus = MTP_userStatusEmpty();
555
556 using UpdateFlag = PeerUpdate::Flag;
557 auto flags = UpdateFlag::None | UpdateFlag::None;
558 data.match([&](const MTPDuserEmpty &data) {
559 const auto canShareThisContact = result->canShareThisContactFast();
560
561 result->setName(tr::lng_deleted(tr::now), QString(), QString(), QString());
562 result->setPhoto(MTP_userProfilePhotoEmpty());
563 result->setFlags(UserDataFlag::Deleted);
564 if (!result->phone().isEmpty()) {
565 result->setPhone(QString());
566 flags |= UpdateFlag::PhoneNumber;
567 }
568 result->setBotInfoVersion(-1);
569 status = &emptyStatus;
570 result->setIsContact(false);
571 if (canShareThisContact != result->canShareThisContactFast()) {
572 flags |= UpdateFlag::CanShareContact;
573 }
574 }, [&](const MTPDuser &data) {
575 minimal = data.is_min();
576
577 const auto canShareThisContact = result->canShareThisContactFast();
578
579 const auto hasRequirePremiumToWrite
580 = data.is_contact_require_premium();
581 const auto hasStarsPerMessage
582 = data.vsend_paid_messages_stars().has_value();
583 if (!hasStarsPerMessage) {
584 result->setStarsPerMessage(0);
585 }
586 result->setBotInfoVersion(data.vbot_info_version().value_or(-1));
587
588 if (!minimal) {
589 if (const auto info = result->botInfo.get()) {
590 info->readsAllHistory = data.is_bot_chat_history();
591 if (info->cantJoinGroups != data.is_bot_nochats()) {
592 info->cantJoinGroups = data.is_bot_nochats();
593 flags |= UpdateFlag::BotCanBeInvited;
594 }
595 if (const auto value = data.vbot_inline_placeholder()) {
596 info->inlinePlaceholder = '_' + qs(*value);
597 } else {
598 info->inlinePlaceholder = QString();
599 }
600 info->supportsAttachMenu = data.is_bot_attach_menu();
601 info->supportsBusiness = data.is_bot_business();
602 const auto canEditInformation = data.is_bot_can_edit();
603 if (info->canEditInformation != canEditInformation) {
604 info->canEditInformation = canEditInformation;
605 flags |= UpdateFlag::ManagedBot;

Callers 15

saveSelfBioMethod · 0.80
loadPopularAppBotsMethod · 0.80
DeleteAndLeaveHandlerFunction · 0.80
saveMethod · 0.80
saveMethod · 0.80
RequestButtonFunction · 0.80
RequestUrlFunction · 0.80
CreateManagedBotBoxFunction · 0.80
SessionMethod · 0.80
OpenAskQuestionConfirmFunction · 0.80
ParseSimilarBotsFunction · 0.80
ParseInviteFunction · 0.80

Calls 15

qsFunction · 0.85
PeerSourceStateClass · 0.85
FormatPhoneFunction · 0.85
EmojiStatusIdClass · 0.85
LastseenFromMTPFunction · 0.85
setBotInfoVersionMethod · 0.80
setIsContactMethod · 0.80
has_valueMethod · 0.80
value_orMethod · 0.80
peerSourceStateMethod · 0.80

Tested by

no test coverage detected