diff --git a/Telegram/SourceFiles/window/window_controller.cpp b/Telegram/SourceFiles/window/window_controller.cpp index 35f5d754d..74ecc4e1c 100644 --- a/Telegram/SourceFiles/window/window_controller.cpp +++ b/Telegram/SourceFiles/window/window_controller.cpp @@ -7,6 +7,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL */ #include "window/window_controller.h" +#include "boxes/peers/edit_peer_info_box.h" #include "window/main_window.h" #include "info/info_memento.h" #include "info/info_controller.h" @@ -100,6 +101,18 @@ Controller::Controller( : Navigation(session) , _window(window) { init(); + + subscribe(Auth().api().fullPeerUpdated(), [=](PeerData *peer) { + if (peer == _showEditPeer) { + _showEditPeer = nullptr; + Ui::show(Box(peer)); + } + }); +} + +void Controller::showEditPeerBox(PeerData *peer) { + _showEditPeer = peer; + Auth().api().requestFullPeer(peer); } void Controller::init() { diff --git a/Telegram/SourceFiles/window/window_controller.h b/Telegram/SourceFiles/window/window_controller.h index 8ad0bea45..abc00adac 100644 --- a/Telegram/SourceFiles/window/window_controller.h +++ b/Telegram/SourceFiles/window/window_controller.h @@ -9,6 +9,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL #include #include "base/flags.h" +#include "base/observer.h" #include "dialogs/dialogs_key.h" class AuthSession; @@ -137,7 +138,9 @@ private: }; -class Controller : public Navigation { +class Controller + : public Navigation + , private base::Subscriber { public: Controller( not_null session, @@ -160,6 +163,7 @@ public: rpl::producer activeChatEntryValue() const; rpl::producer activeChatValue() const; bool jumpToChatListEntry(Dialogs::RowDescriptor row); + void showEditPeerBox(PeerData *peer); void enableGifPauseReason(GifPauseReason reason); void disableGifPauseReason(GifPauseReason reason); @@ -308,6 +312,8 @@ private: Media::Player::FloatDelegate *_defaultFloatPlayerDelegate = nullptr; Media::Player::FloatDelegate *_replacementFloatPlayerDelegate = nullptr; + PeerData *_showEditPeer = nullptr; + rpl::lifetime _lifetime; };