Improved peer context menu item to archive chat.

This commit is contained in:
23rd 2020-04-29 18:23:08 +03:00 committed by John Preston
parent f4a63e1e9d
commit c3c482aa50
3 changed files with 43 additions and 29 deletions

View file

@ -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) {

View file

@ -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<Flag>;
friend inline constexpr auto is_flag_type(Flag) { return true; }

View file

@ -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<rpl::lifetime>(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<UserData*> user) {