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

Method processPeerPhoto

Telegram/SourceFiles/ui/controls/userpic_button.cpp:771–812  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

769}
770
771void UserpicButton::processPeerPhoto() {
772 Expects(_peer != nullptr);
773
774 const auto user = _peer->asUser();
775 const auto nonPersonal = (user && _source != Source::PeerPhoto)
776 ? _peer->session().api().peerPhoto().nonPersonalPhoto(user)
777 : nullptr;
778 _showPeerUserpic = (_source == Source::PeerPhoto)
779 || (user
780 && !user->hasPersonalPhoto()
781 && (_source == Source::NonPersonalPhoto
782 || (_source == Source::NonPersonalIfHasPersonal
783 && hasPersonalPhotoLocally())));
784 const auto showNonPersonal = _showPeerUserpic ? nullptr : nonPersonal;
785
786 _userpicView = _showPeerUserpic
787 ? _peer->createUserpicView()
788 : PeerUserpicView();
789 _nonPersonalView = showNonPersonal
790 ? showNonPersonal->createMediaView()
791 : nullptr;
792 _waiting = _showPeerUserpic
793 ? Ui::PeerUserpicLoading(_userpicView)
794 : (_nonPersonalView && !_nonPersonalView->loaded());
795 if (_waiting) {
796 if (_showPeerUserpic) {
797 _peer->loadUserpic();
798 } else if (_nonPersonalView) {
799 showNonPersonal->load(Data::FileOriginFullUser{
800 peerToUser(user->id),
801 });
802 }
803 }
804 if (_role == Role::OpenPhoto) {
805 if (_peer->userpicPhotoUnknown()) {
806 _peer->updateFullForced();
807 }
808 _canOpenPhoto = (_peer->userpicPhotoId() != 0);
809 updateCursor();
810 updateVideo();
811 }
812}
813
814void UserpicButton::updateCursor() {
815 Expects(_role == Role::OpenPhoto);

Callers

nothing calls this directly

Calls 15

PeerUserpicLoadingFunction · 0.85
peerToUserFunction · 0.85
asUserMethod · 0.80
nonPersonalPhotoMethod · 0.80
apiMethod · 0.80
hasPersonalPhotoMethod · 0.80
createUserpicViewMethod · 0.80
loadUserpicMethod · 0.80
userpicPhotoUnknownMethod · 0.80
updateFullForcedMethod · 0.80
userpicPhotoIdMethod · 0.80
PeerUserpicViewClass · 0.50

Tested by

no test coverage detected