mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-06-05 06:33:57 +02:00
Added ability to archive mask packs.
This commit is contained in:
parent
8420b7dc17
commit
4701c5d6e3
3 changed files with 49 additions and 35 deletions
|
@ -1419,6 +1419,8 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
||||||
"lng_stickers_remove_pack_confirm" = "Remove";
|
"lng_stickers_remove_pack_confirm" = "Remove";
|
||||||
"lng_stickers_archive_pack" = "Archive Stickers";
|
"lng_stickers_archive_pack" = "Archive Stickers";
|
||||||
"lng_stickers_has_been_archived" = "Sticker pack has been archived.";
|
"lng_stickers_has_been_archived" = "Sticker pack has been archived.";
|
||||||
|
"lng_masks_archive_pack" = "Archive Masks";
|
||||||
|
"lng_masks_has_been_archived" = "Mask pack has been archived.";
|
||||||
"lng_masks_installed" = "Mask pack has been installed.";
|
"lng_masks_installed" = "Mask pack has been installed.";
|
||||||
|
|
||||||
"lng_in_dlg_photo" = "Photo";
|
"lng_in_dlg_photo" = "Photo";
|
||||||
|
|
|
@ -73,6 +73,8 @@ public:
|
||||||
|
|
||||||
[[nodiscard]] rpl::producer<Error> errors() const;
|
[[nodiscard]] rpl::producer<Error> errors() const;
|
||||||
|
|
||||||
|
void archiveStickers();
|
||||||
|
|
||||||
bool isMasksSet() const {
|
bool isMasksSet() const {
|
||||||
return (_setFlags & MTPDstickerSet::Flag::f_masks);
|
return (_setFlags & MTPDstickerSet::Flag::f_masks);
|
||||||
}
|
}
|
||||||
|
@ -228,38 +230,6 @@ void StickerSetBox::handleError(Error error) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void StickerSetBox::archiveStickers() {
|
|
||||||
const auto weak = base::make_weak(_controller.get());
|
|
||||||
const auto setId = _set.c_inputStickerSetID().vid().v;
|
|
||||||
_controller->session().api().request(MTPmessages_InstallStickerSet(
|
|
||||||
_set,
|
|
||||||
MTP_boolTrue()
|
|
||||||
)).done([=](const MTPmessages_StickerSetInstallResult &result) {
|
|
||||||
const auto controller = weak.get();
|
|
||||||
if (!controller) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (result.type() == mtpc_messages_stickerSetInstallResultSuccess) {
|
|
||||||
Ui::Toast::Show(tr::lng_stickers_has_been_archived(tr::now));
|
|
||||||
|
|
||||||
const auto &session = controller->session();
|
|
||||||
auto &order = session.data().stickers().setsOrderRef();
|
|
||||||
const auto index = order.indexOf(setId);
|
|
||||||
if (index == -1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
order.removeAt(index);
|
|
||||||
|
|
||||||
session.local().writeInstalledStickers();
|
|
||||||
session.local().writeArchivedStickers();
|
|
||||||
|
|
||||||
session.data().stickers().notifyUpdated();
|
|
||||||
}
|
|
||||||
}).fail([](const MTP::Error &error) {
|
|
||||||
Ui::Toast::Show(Lang::Hard::ServerError());
|
|
||||||
}).send();
|
|
||||||
}
|
|
||||||
|
|
||||||
void StickerSetBox::updateTitleAndButtons() {
|
void StickerSetBox::updateTitleAndButtons() {
|
||||||
setTitle(_inner->title());
|
setTitle(_inner->title());
|
||||||
updateButtons();
|
updateButtons();
|
||||||
|
@ -312,7 +282,7 @@ void StickerSetBox::updateButtons() {
|
||||||
if (!_inner->shortName().isEmpty()) {
|
if (!_inner->shortName().isEmpty()) {
|
||||||
const auto top = addTopButton(st::infoTopBarMenu);
|
const auto top = addTopButton(st::infoTopBarMenu);
|
||||||
const auto archive = [=] {
|
const auto archive = [=] {
|
||||||
archiveStickers();
|
_inner->archiveStickers();
|
||||||
closeBox();
|
closeBox();
|
||||||
};
|
};
|
||||||
const auto menu =
|
const auto menu =
|
||||||
|
@ -320,7 +290,9 @@ void StickerSetBox::updateButtons() {
|
||||||
top->setClickedCallback([=] {
|
top->setClickedCallback([=] {
|
||||||
*menu = base::make_unique_q<Ui::PopupMenu>(top);
|
*menu = base::make_unique_q<Ui::PopupMenu>(top);
|
||||||
(*menu)->addAction(
|
(*menu)->addAction(
|
||||||
tr::lng_stickers_archive_pack(tr::now),
|
isMasks
|
||||||
|
? tr::lng_masks_archive_pack(tr::now)
|
||||||
|
: tr::lng_stickers_archive_pack(tr::now),
|
||||||
archive);
|
archive);
|
||||||
(*menu)->popup(QCursor::pos());
|
(*menu)->popup(QCursor::pos());
|
||||||
return true;
|
return true;
|
||||||
|
@ -883,4 +855,45 @@ void StickerSetBox::Inner::install() {
|
||||||
}).send();
|
}).send();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void StickerSetBox::Inner::archiveStickers() {
|
||||||
|
const auto isMasks = isMasksSet();
|
||||||
|
const auto weak = base::make_weak(_controller.get());
|
||||||
|
_controller->session().api().request(MTPmessages_InstallStickerSet(
|
||||||
|
_input,
|
||||||
|
MTP_boolTrue()
|
||||||
|
)).done([=](const MTPmessages_StickerSetInstallResult &result) {
|
||||||
|
const auto controller = weak.get();
|
||||||
|
if (!controller) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (result.type() == mtpc_messages_stickerSetInstallResultSuccess) {
|
||||||
|
Ui::Toast::Show(isMasks
|
||||||
|
? tr::lng_masks_has_been_archived(tr::now)
|
||||||
|
: tr::lng_stickers_has_been_archived(tr::now));
|
||||||
|
|
||||||
|
const auto &session = controller->session();
|
||||||
|
auto &order = isMasks
|
||||||
|
? session.data().stickers().maskSetsOrderRef()
|
||||||
|
: session.data().stickers().setsOrderRef();
|
||||||
|
const auto index = order.indexOf(_setId);
|
||||||
|
if (index == -1) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
order.removeAt(index);
|
||||||
|
|
||||||
|
if (isMasks) {
|
||||||
|
session.local().writeInstalledMasks();
|
||||||
|
session.local().writeArchivedMasks();
|
||||||
|
} else {
|
||||||
|
session.local().writeInstalledStickers();
|
||||||
|
session.local().writeArchivedStickers();
|
||||||
|
}
|
||||||
|
|
||||||
|
session.data().stickers().notifyUpdated();
|
||||||
|
}
|
||||||
|
}).fail([](const MTP::Error &error) {
|
||||||
|
Ui::Toast::Show(Lang::Hard::ServerError());
|
||||||
|
}).send();
|
||||||
|
}
|
||||||
|
|
||||||
StickerSetBox::Inner::~Inner() = default;
|
StickerSetBox::Inner::~Inner() = default;
|
||||||
|
|
|
@ -46,7 +46,6 @@ private:
|
||||||
void updateButtons();
|
void updateButtons();
|
||||||
void addStickers();
|
void addStickers();
|
||||||
void copyStickersLink();
|
void copyStickersLink();
|
||||||
void archiveStickers();
|
|
||||||
void handleError(Error error);
|
void handleError(Error error);
|
||||||
|
|
||||||
const not_null<Window::SessionController*> _controller;
|
const not_null<Window::SessionController*> _controller;
|
||||||
|
|
Loading…
Add table
Reference in a new issue