diff --git a/Telegram/SourceFiles/history/history.cpp b/Telegram/SourceFiles/history/history.cpp index cb92da4b7..569e53d4e 100644 --- a/Telegram/SourceFiles/history/history.cpp +++ b/Telegram/SourceFiles/history/history.cpp @@ -1965,6 +1965,9 @@ void History::setFolderPointer(Data::Folder *folder) { if (folder) { folder->registerOne(this); } + Notify::peerUpdatedDelayed( + peer, + Notify::PeerUpdate::Flag::FolderChanged); } void History::applyPinnedUpdate(const MTPDupdateDialogPinned &data) { diff --git a/Telegram/SourceFiles/observer_peer.h b/Telegram/SourceFiles/observer_peer.h index 4005a3883..67ce10c0c 100644 --- a/Telegram/SourceFiles/observer_peer.h +++ b/Telegram/SourceFiles/observer_peer.h @@ -40,36 +40,37 @@ struct PeerUpdate { UnreadViewChanged = (1 << 9), PinnedMessageChanged = (1 << 10), TopPromotedChanged = (1 << 11), + FolderChanged = (1 << 12), // For chats and channels - InviteLinkChanged = (1 << 12), - MembersChanged = (1 << 13), - AdminsChanged = (1 << 14), - BannedUsersChanged = (1 << 15), - UnreadMentionsChanged = (1 << 16), - RightsChanged = (1 << 17), + InviteLinkChanged = (1 << 13), + MembersChanged = (1 << 14), + AdminsChanged = (1 << 15), + BannedUsersChanged = (1 << 16), + UnreadMentionsChanged = (1 << 17), + RightsChanged = (1 << 18), // For users - UserCanShareContact = (1 << 18), - UserIsContact = (1 << 19), - UserPhoneChanged = (1 << 20), - UserIsBlocked = (1 << 21), - BotCommandsChanged = (1 << 22), - UserOnlineChanged = (1 << 23), - BotCanAddToGroups = (1 << 24), - UserCommonChatsChanged = (1 << 25), - UserHasCalls = (1 << 26), - UserOccupiedChanged = (1 << 27), - UserSupportInfoChanged = (1 << 28), + UserCanShareContact = (1 << 19), + UserIsContact = (1 << 20), + UserPhoneChanged = (1 << 21), + UserIsBlocked = (1 << 22), + BotCommandsChanged = (1 << 23), + UserOnlineChanged = (1 << 24), + BotCanAddToGroups = (1 << 25), + UserCommonChatsChanged = (1 << 26), + UserHasCalls = (1 << 27), + UserOccupiedChanged = (1 << 28), + UserSupportInfoChanged = (1 << 29), // For channels - ChannelAmIn = (1 << 18), - ChannelStickersChanged = (1 << 19), - ChannelPromotedChanged = (1 << 20), - ChannelLinkedChat = (1 << 21), - ChannelLocation = (1 << 22), - ChannelSlowmode = (1 << 23), - ChannelLocalMessages = (1 << 24), + ChannelAmIn = (1 << 19), + ChannelStickersChanged = (1 << 20), + ChannelPromotedChanged = (1 << 21), + ChannelLinkedChat = (1 << 22), + ChannelLocation = (1 << 23), + ChannelSlowmode = (1 << 24), + ChannelLocalMessages = (1 << 25), }; using Flags = base::flags; friend inline constexpr auto is_flag_type(Flag) { return true; } diff --git a/Telegram/SourceFiles/window/window_peer_menu.cpp b/Telegram/SourceFiles/window/window_peer_menu.cpp index 2d2bc85b3..4ec193411 100644 --- a/Telegram/SourceFiles/window/window_peer_menu.cpp +++ b/Telegram/SourceFiles/window/window_peer_menu.cpp @@ -384,20 +384,30 @@ void Filler::addToggleUnreadMark() { void Filler::addToggleArchive() { const auto peer = _peer; - const auto archived = [&] { + const auto isArchived = [=] { const auto history = peer->owner().historyLoaded(peer); return history && history->folder(); - }(); + }; const auto toggle = [=] { ToggleHistoryArchived( peer->owner().history(peer), - !archived); + !isArchived()); }; - _addAction( - (archived + const auto archiveAction = _addAction( + (isArchived() ? tr::lng_archived_remove(tr::now) : tr::lng_archived_add(tr::now)), toggle); + + const auto lifetime = Ui::CreateChild(archiveAction); + Notify::PeerUpdateViewer( + peer, + Notify::PeerUpdate::Flag::FolderChanged + ) | rpl::start_with_next([=] { + archiveAction->setText(isArchived() + ? tr::lng_archived_remove(tr::now) + : tr::lng_archived_add(tr::now)); + }, *lifetime); } void Filler::addBlockUser(not_null user) {