diff --git a/Telegram/SourceFiles/media/player/media_player_instance.cpp b/Telegram/SourceFiles/media/player/media_player_instance.cpp index 46c848749..af7dbb60f 100644 --- a/Telegram/SourceFiles/media/player/media_player_instance.cpp +++ b/Telegram/SourceFiles/media/player/media_player_instance.cpp @@ -269,7 +269,8 @@ bool Instance::validPlaylist(not_null data) { using Key = SliceKey; const auto inSameDomain = [](const Key &a, const Key &b) { return (a.peerId == b.peerId) - && (a.migratedPeerId == b.migratedPeerId); + && (a.migratedPeerId == b.migratedPeerId) + && (a.scheduled == b.scheduled); }; const auto countDistanceInData = [&](const Key &a, const Key &b) { return [&](const SparseIdsMergedSlice &data) { @@ -300,7 +301,11 @@ void Instance::validatePlaylist(not_null data) { data->playlistLifetime.destroy(); if (const auto key = playlistKey(data)) { data->playlistRequestedKey = key; - SharedMediaMergedViewer( + + const auto sharedMediaViewer = key->scheduled + ? SharedScheduledMediaViewer + : SharedMediaMergedViewer; + sharedMediaViewer( &data->history->session(), SharedMediaMergedKey(*key, data->overview), kIdsLimit, @@ -321,7 +326,11 @@ auto Instance::playlistKey(not_null data) const -> std::optional { const auto contextId = data->current.contextId(); const auto history = data->history; - if (!contextId || !history || !IsServerMsgId(contextId.msg)) { + if (!contextId || !history) { + return {}; + } + const auto item = data->history->owner().message(contextId); + if (!item || (!IsServerMsgId(contextId.msg) && !item->isScheduled())) { return {}; } @@ -331,7 +340,8 @@ auto Instance::playlistKey(not_null data) const return SliceKey( data->history->peer->id, data->migrated ? data->migrated->peer->id : 0, - universalId); + universalId, + item->isScheduled()); } HistoryItem *Instance::itemByIndex(not_null data, int index) {