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) {
|
bool HistoryWidget::switchPinnedHidden(not_null<PeerData*> peer, bool hidden) {
|
||||||
auto result = false;
|
auto result = false;
|
||||||
auto &session = peer->session();
|
auto &session = peer->session();
|
||||||
const auto migrated = peer->migrateFrom();
|
if (hidden) {
|
||||||
const auto top = Data::ResolveTopPinnedId(peer, migrated);
|
const auto migrated = peer->migrateFrom();
|
||||||
const auto universal = !top
|
const auto top = Data::ResolveTopPinnedId(peer, migrated);
|
||||||
? int32(0)
|
const auto universal = !top
|
||||||
: (migrated && !top.channel)
|
? int32(0)
|
||||||
? (top.msg - ServerMaxMsgId)
|
: (migrated && !top.channel)
|
||||||
: top.msg;
|
? (top.msg - ServerMaxMsgId)
|
||||||
if (universal) {
|
: top.msg;
|
||||||
session.settings().setHiddenPinnedMessageId(peer->id, universal);
|
if (universal) {
|
||||||
session.saveSettingsDelayed();
|
session.settings().setHiddenPinnedMessageId(peer->id, universal);
|
||||||
result = true;
|
session.saveSettingsDelayed();
|
||||||
|
result = true;
|
||||||
|
} else {
|
||||||
|
session.api().requestFullPeer(peer);
|
||||||
|
}
|
||||||
} else {
|
} 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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -5673,9 +5682,7 @@ void HistoryWidget::setupPinnedTracker() {
|
||||||
void HistoryWidget::checkPinnedBarState() {
|
void HistoryWidget::checkPinnedBarState() {
|
||||||
Expects(_pinnedTracker != nullptr);
|
Expects(_pinnedTracker != nullptr);
|
||||||
|
|
||||||
const auto hiddenId = _peer->canPinMessages()
|
const auto hiddenId = session().settings().hiddenPinnedMessageId(_peer->id);
|
||||||
? MsgId(0)
|
|
||||||
: session().settings().hiddenPinnedMessageId(_peer->id);
|
|
||||||
const auto currentPinnedId = Data::ResolveTopPinnedId(
|
const auto currentPinnedId = Data::ResolveTopPinnedId(
|
||||||
_peer,
|
_peer,
|
||||||
_migrated ? _migrated->peer.get() : nullptr);
|
_migrated ? _migrated->peer.get() : nullptr);
|
||||||
|
|
|
||||||
|
|
@ -74,8 +74,8 @@ void UnpinMessageBox::hideMessage() {
|
||||||
if (_requestId) return;
|
if (_requestId) return;
|
||||||
|
|
||||||
auto hidden = HistoryWidget::switchPinnedHidden(_peer, true);
|
auto hidden = HistoryWidget::switchPinnedHidden(_peer, true);
|
||||||
// if (hidden) {
|
if (hidden) {
|
||||||
// _peer->session().changes().peerUpdated(_peer, Data::PeerUpdate::Flag::PinnedMessage);
|
_peer->session().changes().peerUpdated(_peer, Data::PeerUpdate::Flag::PinnedMessages);
|
||||||
// }
|
}
|
||||||
Ui::hideLayer();
|
Ui::hideLayer();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -799,20 +799,20 @@ void Filler::addTogglesForArchive() {
|
||||||
|
|
||||||
void PeerMenuHidePinnedMessage(not_null<PeerData*> peer) {
|
void PeerMenuHidePinnedMessage(not_null<PeerData*> peer) {
|
||||||
auto hidden = HistoryWidget::switchPinnedHidden(peer, true);
|
auto hidden = HistoryWidget::switchPinnedHidden(peer, true);
|
||||||
// if (hidden) {
|
if (hidden) {
|
||||||
// peer->session().changes().peerUpdated(
|
peer->session().changes().peerUpdated(
|
||||||
// peer,
|
peer,
|
||||||
// Data::PeerUpdate::Flag::PinnedMessage);
|
Data::PeerUpdate::Flag::PinnedMessages);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerMenuUnhidePinnedMessage(not_null<PeerData*> peer) {
|
void PeerMenuUnhidePinnedMessage(not_null<PeerData*> peer) {
|
||||||
auto unhidden = HistoryWidget::switchPinnedHidden(peer, false);
|
auto unhidden = HistoryWidget::switchPinnedHidden(peer, false);
|
||||||
// if (unhidden) {
|
if (unhidden) {
|
||||||
// peer->session().changes().peerUpdated(
|
peer->session().changes().peerUpdated(
|
||||||
// peer,
|
peer,
|
||||||
// Data::PeerUpdate::Flag::PinnedMessage);
|
Data::PeerUpdate::Flag::PinnedMessages);
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PeerMenuExportChat(not_null<PeerData*> peer) {
|
void PeerMenuExportChat(not_null<PeerData*> peer) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue