mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
parent
eac13b31f1
commit
e01910ac68
1 changed files with 31 additions and 14 deletions
|
@ -526,11 +526,13 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
||||||
return [=] {
|
return [=] {
|
||||||
auto ids = prepareGoodIdsForNewFilters();
|
auto ids = prepareGoodIdsForNewFilters();
|
||||||
|
|
||||||
using Requests = std::vector<MTPmessages_UpdateDialogFilter>;
|
auto order = std::vector<FilterId>();
|
||||||
auto addRequests = Requests(), removeRequests = Requests();
|
auto updates = std::vector<MTPUpdate>();
|
||||||
|
auto addRequests = std::vector<MTPmessages_UpdateDialogFilter>();
|
||||||
|
auto removeRequests = std::vector<MTPmessages_UpdateDialogFilter>();
|
||||||
|
|
||||||
auto &realFilters = session->data().chatsFilters();
|
auto &realFilters = session->data().chatsFilters();
|
||||||
const auto &list = realFilters.list();
|
const auto &list = realFilters.list();
|
||||||
auto order = std::vector<FilterId>();
|
|
||||||
order.reserve(rows->size());
|
order.reserve(rows->size());
|
||||||
for (const auto &row : *rows) {
|
for (const auto &row : *rows) {
|
||||||
const auto id = row.filter.id();
|
const auto id = row.filter.id();
|
||||||
|
@ -558,7 +560,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
||||||
addRequests.push_back(request);
|
addRequests.push_back(request);
|
||||||
order.push_back(newId);
|
order.push_back(newId);
|
||||||
}
|
}
|
||||||
realFilters.apply(MTP_updateDialogFilter(
|
updates.push_back(MTP_updateDialogFilter(
|
||||||
MTP_flags(removed
|
MTP_flags(removed
|
||||||
? MTPDupdateDialogFilter::Flag(0)
|
? MTPDupdateDialogFilter::Flag(0)
|
||||||
: MTPDupdateDialogFilter::Flag::f_filter),
|
: MTPDupdateDialogFilter::Flag::f_filter),
|
||||||
|
@ -578,16 +580,31 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
||||||
}
|
}
|
||||||
order.insert(order.begin() + position, FilterId(0));
|
order.insert(order.begin() + position, FilterId(0));
|
||||||
}
|
}
|
||||||
auto previousId = mtpRequestId(0);
|
crl::on_main(session, [
|
||||||
auto &&requests = ranges::views::concat(removeRequests, addRequests);
|
session,
|
||||||
for (auto &request : requests) {
|
order = std::move(order),
|
||||||
previousId = session->api().request(
|
updates = std::move(updates),
|
||||||
std::move(request)
|
addRequests = std::move(addRequests),
|
||||||
).afterRequest(previousId).send();
|
removeRequests = std::move(removeRequests)
|
||||||
}
|
] {
|
||||||
if (!order.empty() && !addRequests.empty()) {
|
const auto api = &session->api();
|
||||||
realFilters.saveOrder(order, previousId);
|
const auto filters = &session->data().chatsFilters();
|
||||||
}
|
for (const auto &update : updates) {
|
||||||
|
filters->apply(update);
|
||||||
|
}
|
||||||
|
auto previousId = mtpRequestId(0);
|
||||||
|
auto &&requests = ranges::views::concat(
|
||||||
|
removeRequests,
|
||||||
|
addRequests);
|
||||||
|
for (auto &request : requests) {
|
||||||
|
previousId = api->request(
|
||||||
|
std::move(request)
|
||||||
|
).afterRequest(previousId).send();
|
||||||
|
}
|
||||||
|
if (!order.empty() && !addRequests.empty()) {
|
||||||
|
filters->saveOrder(order, previousId);
|
||||||
|
}
|
||||||
|
});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue