Added support updateStickerSetsOrder for masks.

This commit is contained in:
23rd 2021-03-29 19:01:21 +03:00
parent 1cdb83462e
commit abe62475cb
1 changed files with 28 additions and 16 deletions

View File

@ -2141,25 +2141,37 @@ void Updates::feedUpdate(const MTPUpdate &update) {
case mtpc_updateStickerSetsOrder: { case mtpc_updateStickerSetsOrder: {
auto &d = update.c_updateStickerSetsOrder(); auto &d = update.c_updateStickerSetsOrder();
if (!d.is_masks()) { auto &stickers = session().data().stickers();
const auto &order = d.vorder().v; const auto isMasks = d.is_masks();
const auto &sets = session().data().stickers().sets(); const auto &order = d.vorder().v;
Data::StickersSetsOrder result; const auto &sets = stickers.sets();
for (const auto &item : order) { Data::StickersSetsOrder result;
if (sets.find(item.v) == sets.cend()) { for (const auto &item : order) {
break; if (sets.find(item.v) == sets.cend()) {
} break;
result.push_back(item.v);
} }
if (result.size() != session().data().stickers().setsOrder().size() result.push_back(item.v);
|| result.size() != order.size()) { }
session().data().stickers().setLastUpdate(0); const auto localSize = isMasks
session().api().updateStickers(); ? stickers.maskSetsOrder().size()
: stickers.setsOrder().size();
if ((result.size() != localSize) || (result.size() != order.size())) {
if (isMasks) {
stickers.setLastMasksUpdate(0);
session().api().updateMasks();
} else { } else {
session().data().stickers().setsOrderRef() = std::move(result); stickers.setLastUpdate(0);
session().local().writeInstalledStickers(); session().api().updateStickers();
session().data().stickers().notifyUpdated();
} }
} else {
if (isMasks) {
stickers.maskSetsOrderRef() = std::move(result);
session().local().writeInstalledMasks();
} else {
stickers.setsOrderRef() = std::move(result);
session().local().writeInstalledStickers();
}
stickers.notifyUpdated();
} }
} break; } break;