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

Method setMyPermanent

Telegram/SourceFiles/api/api_invite_links.cpp:620–676  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

618}
619
620void InviteLinks::setMyPermanent(
621 not_null<PeerData*> peer,
622 const MTPExportedChatInvite &invite) {
623 auto link = parse(peer, invite);
624 if (!link) {
625 LOG(("API Error: "
626 "InviteLinks::setPermanent called with non-link."));
627 return;
628 } else if (!link->permanent) {
629 LOG(("API Error: "
630 "InviteLinks::setPermanent called with non-permanent link."));
631 return;
632 }
633 auto i = _firstSlices.find(peer);
634 if (i == end(_firstSlices)) {
635 i = _firstSlices.emplace(peer).first;
636 }
637 auto &links = i->second;
638 auto updateOldPermanent = Update{
639 .peer = peer,
640 .admin = peer->session().user(),
641 };
642 if (const auto permanent = lookupMyPermanent(links)) {
643 if (permanent->link == link->link) {
644 if (permanent->usage != link->usage) {
645 permanent->usage = link->usage;
646 _updates.fire(Update{
647 .peer = peer,
648 .admin = peer->session().user(),
649 .was = link->link,
650 .now = *permanent
651 });
652 }
653 return;
654 }
655 updateOldPermanent.was = permanent->link;
656 updateOldPermanent.now = *permanent;
657 updateOldPermanent.now->revoked = true;
658 links.links.erase(begin(links.links));
659 if (links.count > 0) {
660 --links.count;
661 }
662 }
663 links.links.insert(begin(links.links), *link);
664
665 editPermanentLink(peer, link->link);
666 notify(peer);
667
668 if (updateOldPermanent.now) {
669 _updates.fire(std::move(updateOldPermanent));
670 }
671 _updates.fire(Update{
672 .peer = peer,
673 .admin = peer->session().user(),
674 .now = link
675 });
676}
677

Callers 2

ApplyChannelUpdateFunction · 0.80
ApplyChatUpdateFunction · 0.80

Calls 7

emplaceMethod · 0.80
findMethod · 0.45
userMethod · 0.45
sessionMethod · 0.45
fireMethod · 0.45
eraseMethod · 0.45
insertMethod · 0.45

Tested by

no test coverage detected