| 2178 | namespace Data { |
| 2179 | |
| 2180 | void SetTopPinnedMessageId( |
| 2181 | not_null<PeerData*> peer, |
| 2182 | MsgId messageId) { |
| 2183 | if (const auto channel = peer->asChannel()) { |
| 2184 | if (messageId <= channel->availableMinId()) { |
| 2185 | return; |
| 2186 | } |
| 2187 | } |
| 2188 | auto &session = peer->session(); |
| 2189 | const auto hiddenId = session.settings().hiddenPinnedMessageId(peer->id); |
| 2190 | if (hiddenId != 0 && hiddenId != messageId) { |
| 2191 | session.settings().setHiddenPinnedMessageId( |
| 2192 | peer->id, |
| 2193 | MsgId(0), // topicRootId |
| 2194 | PeerId(0), // monoforumPeerId |
| 2195 | 0); |
| 2196 | session.saveSettingsDelayed(); |
| 2197 | } |
| 2198 | session.storage().add(Storage::SharedMediaAddExisting( |
| 2199 | peer->id, |
| 2200 | MsgId(0), // topicRootId |
| 2201 | PeerId(0), // monoforumPeerId |
| 2202 | Storage::SharedMediaType::Pinned, |
| 2203 | messageId, |
| 2204 | { messageId, ServerMaxMsgId })); |
| 2205 | peer->owner().history(peer)->setHasPinnedMessages(true); |
| 2206 | } |
| 2207 | |
| 2208 | FullMsgId ResolveTopPinnedId( |
| 2209 | not_null<PeerData*> peer, |
no test coverage detected