mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-15 21:57:10 +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 [=] {
|
||||
auto ids = prepareGoodIdsForNewFilters();
|
||||
|
||||
using Requests = std::vector<MTPmessages_UpdateDialogFilter>;
|
||||
auto addRequests = Requests(), removeRequests = Requests();
|
||||
auto order = std::vector<FilterId>();
|
||||
auto updates = std::vector<MTPUpdate>();
|
||||
auto addRequests = std::vector<MTPmessages_UpdateDialogFilter>();
|
||||
auto removeRequests = std::vector<MTPmessages_UpdateDialogFilter>();
|
||||
|
||||
auto &realFilters = session->data().chatsFilters();
|
||||
const auto &list = realFilters.list();
|
||||
auto order = std::vector<FilterId>();
|
||||
order.reserve(rows->size());
|
||||
for (const auto &row : *rows) {
|
||||
const auto id = row.filter.id();
|
||||
|
@ -558,7 +560,7 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
addRequests.push_back(request);
|
||||
order.push_back(newId);
|
||||
}
|
||||
realFilters.apply(MTP_updateDialogFilter(
|
||||
updates.push_back(MTP_updateDialogFilter(
|
||||
MTP_flags(removed
|
||||
? MTPDupdateDialogFilter::Flag(0)
|
||||
: MTPDupdateDialogFilter::Flag::f_filter),
|
||||
|
@ -578,16 +580,31 @@ void FilterRowButton::paintEvent(QPaintEvent *e) {
|
|||
}
|
||||
order.insert(order.begin() + position, FilterId(0));
|
||||
}
|
||||
auto previousId = mtpRequestId(0);
|
||||
auto &&requests = ranges::views::concat(removeRequests, addRequests);
|
||||
for (auto &request : requests) {
|
||||
previousId = session->api().request(
|
||||
std::move(request)
|
||||
).afterRequest(previousId).send();
|
||||
}
|
||||
if (!order.empty() && !addRequests.empty()) {
|
||||
realFilters.saveOrder(order, previousId);
|
||||
}
|
||||
crl::on_main(session, [
|
||||
session,
|
||||
order = std::move(order),
|
||||
updates = std::move(updates),
|
||||
addRequests = std::move(addRequests),
|
||||
removeRequests = std::move(removeRequests)
|
||||
] {
|
||||
const auto api = &session->api();
|
||||
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