Added support updateStickerSetsOrder for masks.

This commit is contained in:
23rd 2021-03-29 19:01:21 +03:00
parent 1cdb83462e
commit abe62475cb

View file

@ -2141,9 +2141,10 @@ 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 isMasks = d.is_masks();
const auto &order = d.vorder().v; const auto &order = d.vorder().v;
const auto &sets = session().data().stickers().sets(); const auto &sets = stickers.sets();
Data::StickersSetsOrder result; Data::StickersSetsOrder result;
for (const auto &item : order) { for (const auto &item : order) {
if (sets.find(item.v) == sets.cend()) { if (sets.find(item.v) == sets.cend()) {
@ -2151,15 +2152,26 @@ void Updates::feedUpdate(const MTPUpdate &update) {
} }
result.push_back(item.v); result.push_back(item.v);
} }
if (result.size() != session().data().stickers().setsOrder().size() const auto localSize = isMasks
|| result.size() != order.size()) { ? stickers.maskSetsOrder().size()
session().data().stickers().setLastUpdate(0); : stickers.setsOrder().size();
session().api().updateStickers(); 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;