2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-09-01 23:15:59 +00:00

Support shared media / pins for sublists.

This commit is contained in:
John Preston
2025-06-02 15:00:36 +04:00
parent ffe6786ad1
commit dfc1ec3ccf
83 changed files with 1105 additions and 221 deletions

View File

@@ -1474,6 +1474,16 @@ Data::SavedMessages *PeerData::monoforum() const {
return nullptr;
}
Data::SavedSublist *PeerData::monoforumSublistFor(
PeerId sublistPeerId) const {
if (!sublistPeerId) {
return nullptr;
} else if (const auto monoforum = this->monoforum()) {
return monoforum->sublistLoaded(owner().peer(sublistPeerId));
}
return nullptr;
}
bool PeerData::allowsForwarding() const {
if (isUser()) {
return true;
@@ -1807,12 +1817,14 @@ void SetTopPinnedMessageId(
session.settings().setHiddenPinnedMessageId(
peer->id,
MsgId(0), // topicRootId
PeerId(0), // monoforumPeerId
0);
session.saveSettingsDelayed();
}
session.storage().add(Storage::SharedMediaAddExisting(
peer->id,
MsgId(0), // topicRootId
PeerId(0), // monoforumPeerId
Storage::SharedMediaType::Pinned,
messageId,
{ messageId, ServerMaxMsgId }));
@@ -1822,22 +1834,25 @@ void SetTopPinnedMessageId(
FullMsgId ResolveTopPinnedId(
not_null<PeerData*> peer,
MsgId topicRootId,
PeerId monoforumPeerId,
PeerData *migrated) {
const auto slice = peer->session().storage().snapshot(
Storage::SharedMediaQuery(
Storage::SharedMediaKey(
peer->id,
topicRootId,
monoforumPeerId,
Storage::SharedMediaType::Pinned,
ServerMaxMsgId - 1),
1,
1));
const auto old = (!topicRootId && migrated)
const auto old = (!topicRootId && !monoforumPeerId && migrated)
? migrated->session().storage().snapshot(
Storage::SharedMediaQuery(
Storage::SharedMediaKey(
migrated->id,
MsgId(0), // topicRootId
PeerId(0), // monoforumPeerId
Storage::SharedMediaType::Pinned,
ServerMaxMsgId - 1),
1,
@@ -1859,22 +1874,25 @@ FullMsgId ResolveTopPinnedId(
FullMsgId ResolveMinPinnedId(
not_null<PeerData*> peer,
MsgId topicRootId,
PeerId monoforumPeerId,
PeerData *migrated) {
const auto slice = peer->session().storage().snapshot(
Storage::SharedMediaQuery(
Storage::SharedMediaKey(
peer->id,
topicRootId,
monoforumPeerId,
Storage::SharedMediaType::Pinned,
1),
1,
1));
const auto old = (!topicRootId && migrated)
const auto old = (!topicRootId && !monoforumPeerId && migrated)
? migrated->session().storage().snapshot(
Storage::SharedMediaQuery(
Storage::SharedMediaKey(
migrated->id,
MsgId(0), // topicRootId
PeerId(0), // monoforumPeerId
Storage::SharedMediaType::Pinned,
1),
1,