Fix pinned messages
This commit is contained in:
parent
183762b88c
commit
1244373358
3 changed files with 35 additions and 28 deletions
|
|
@ -5645,19 +5645,28 @@ bool HistoryWidget::hasHiddenPinnedMessage(not_null<PeerData*> peer) {
|
|||
bool HistoryWidget::switchPinnedHidden(not_null<PeerData*> peer, bool hidden) {
|
||||
auto result = false;
|
||||
auto &session = peer->session();
|
||||
const auto migrated = peer->migrateFrom();
|
||||
const auto top = Data::ResolveTopPinnedId(peer, migrated);
|
||||
const auto universal = !top
|
||||
? int32(0)
|
||||
: (migrated && !top.channel)
|
||||
? (top.msg - ServerMaxMsgId)
|
||||
: top.msg;
|
||||
if (universal) {
|
||||
session.settings().setHiddenPinnedMessageId(peer->id, universal);
|
||||
session.saveSettingsDelayed();
|
||||
result = true;
|
||||
if (hidden) {
|
||||
const auto migrated = peer->migrateFrom();
|
||||
const auto top = Data::ResolveTopPinnedId(peer, migrated);
|
||||
const auto universal = !top
|
||||
? int32(0)
|
||||
: (migrated && !top.channel)
|
||||
? (top.msg - ServerMaxMsgId)
|
||||
: top.msg;
|
||||
if (universal) {
|
||||
session.settings().setHiddenPinnedMessageId(peer->id, universal);
|
||||
session.saveSettingsDelayed();
|
||||
result = true;
|
||||
} else {
|
||||
session.api().requestFullPeer(peer);
|
||||
}
|
||||
} else {
|
||||
session.api().requestFullPeer(peer);
|
||||
const auto hiddenId = session.settings().hiddenPinnedMessageId(peer->id);
|
||||
if (hiddenId != 0) {
|
||||
session.settings().setHiddenPinnedMessageId(peer->id, 0);
|
||||
session.saveSettingsDelayed();
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -5673,9 +5682,7 @@ void HistoryWidget::setupPinnedTracker() {
|
|||
void HistoryWidget::checkPinnedBarState() {
|
||||
Expects(_pinnedTracker != nullptr);
|
||||
|
||||
const auto hiddenId = _peer->canPinMessages()
|
||||
? MsgId(0)
|
||||
: session().settings().hiddenPinnedMessageId(_peer->id);
|
||||
const auto hiddenId = session().settings().hiddenPinnedMessageId(_peer->id);
|
||||
const auto currentPinnedId = Data::ResolveTopPinnedId(
|
||||
_peer,
|
||||
_migrated ? _migrated->peer.get() : nullptr);
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@ void UnpinMessageBox::hideMessage() {
|
|||
if (_requestId) return;
|
||||
|
||||
auto hidden = HistoryWidget::switchPinnedHidden(_peer, true);
|
||||
// if (hidden) {
|
||||
// _peer->session().changes().peerUpdated(_peer, Data::PeerUpdate::Flag::PinnedMessage);
|
||||
// }
|
||||
if (hidden) {
|
||||
_peer->session().changes().peerUpdated(_peer, Data::PeerUpdate::Flag::PinnedMessages);
|
||||
}
|
||||
Ui::hideLayer();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -799,20 +799,20 @@ void Filler::addTogglesForArchive() {
|
|||
|
||||
void PeerMenuHidePinnedMessage(not_null<PeerData*> peer) {
|
||||
auto hidden = HistoryWidget::switchPinnedHidden(peer, true);
|
||||
// if (hidden) {
|
||||
// peer->session().changes().peerUpdated(
|
||||
// peer,
|
||||
// Data::PeerUpdate::Flag::PinnedMessage);
|
||||
// }
|
||||
if (hidden) {
|
||||
peer->session().changes().peerUpdated(
|
||||
peer,
|
||||
Data::PeerUpdate::Flag::PinnedMessages);
|
||||
}
|
||||
}
|
||||
|
||||
void PeerMenuUnhidePinnedMessage(not_null<PeerData*> peer) {
|
||||
auto unhidden = HistoryWidget::switchPinnedHidden(peer, false);
|
||||
// if (unhidden) {
|
||||
// peer->session().changes().peerUpdated(
|
||||
// peer,
|
||||
// Data::PeerUpdate::Flag::PinnedMessage);
|
||||
// }
|
||||
if (unhidden) {
|
||||
peer->session().changes().peerUpdated(
|
||||
peer,
|
||||
Data::PeerUpdate::Flag::PinnedMessages);
|
||||
}
|
||||
}
|
||||
|
||||
void PeerMenuExportChat(not_null<PeerData*> peer) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue