2
0
mirror of https://github.com/telegramdesktop/tdesktop synced 2025-08-30 22:16:14 +00:00

Fix restoring shared media state.

This commit is contained in:
John Preston
2017-11-12 18:35:20 +04:00
parent fc66550a32
commit 3a25313e61
4 changed files with 17 additions and 11 deletions

View File

@@ -150,13 +150,17 @@ base::optional<int> SparseIdsMergedSlice::distance(
}
auto SparseIdsMergedSlice::nearest(
UniversalMsgId id) const -> base::optional<UniversalMsgId> {
auto convertFromMigratedNearest = [](MsgId result) {
return result - ServerMaxMsgId;
UniversalMsgId id) const -> base::optional<FullMsgId> {
auto convertFromPartNearest = [&](MsgId result) {
return ComputeId(_key.peerId, result);
};
auto convertFromMigratedNearest = [&](MsgId result) {
return ComputeId(_key.migratedPeerId, result);
};
if (IsServerMsgId(id)) {
if (auto partNearestId = _part.nearest(id)) {
return partNearestId;
return partNearestId
| convertFromPartNearest;
} else if (isolatedInPart()) {
return base::none;
}
@@ -171,7 +175,8 @@ auto SparseIdsMergedSlice::nearest(
} else if (isolatedInMigrated()) {
return base::none;
}
return _part.nearest(0);
return _part.nearest(0)
| convertFromPartNearest;
}
SparseIdsSliceBuilder::SparseIdsSliceBuilder(

View File

@@ -99,7 +99,7 @@ public:
int size() const;
FullMsgId operator[](int index) const;
base::optional<int> distance(const Key &a, const Key &b) const;
base::optional<UniversalMsgId> nearest(UniversalMsgId id) const;
base::optional<FullMsgId> nearest(UniversalMsgId id) const;
using SimpleViewerFunction = rpl::producer<SparseIdsSlice>(
PeerId peerId,