Merge pull request #1630 from FallenValkyrie/allow_sticker_pack_removal

Allow sticker pack removal
This commit is contained in:
DeepBlueV7.X 2023-12-22 01:00:26 +01:00 committed by GitHub
commit 8049297cd1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 85 additions and 21 deletions

View file

@ -8,6 +8,7 @@
#include <QFileInfo>
#include <QMimeDatabase>
#include <mtx/events/mscs/image_packs.hpp>
#include <nlohmann/json.hpp>
#include <unordered_set>
@ -285,18 +286,7 @@ SingleImagePackModel::save()
});
} else {
if (old_statekey_ != statekey_) {
http::client()->send_state_event(
roomid_,
to_string(mtx::events::EventType::ImagePackInRoom),
old_statekey_,
nlohmann::json::object(),
[](const mtx::responses::EventId &, mtx::http::RequestErr e) {
if (e)
ChatPage::instance()->showNotification(
tr("Failed to delete old image pack: %1")
.arg(QString::fromStdString(e->matrix_error.error)));
});
old_statekey_ = statekey_;
this->remove();
}
http::client()->send_state_event(
@ -314,6 +304,37 @@ SingleImagePackModel::save()
}
}
void
SingleImagePackModel::remove()
{
// handle account pack deletion.
// Sadly we cannot actually delete the pack,
// so we just send an empty pack to clear out its information.
if (roomid_.empty()) {
http::client()->put_account_data(
mtx::events::msc2545::ImagePack(), [](mtx::http::RequestErr e) {
if (e)
ChatPage::instance()->showNotification(
tr("Failed to update image pack: %1")
.arg(QString::fromStdString(e->matrix_error.error)));
});
return;
}
http::client()->send_state_event(
roomid_,
to_string(mtx::events::EventType::ImagePackInRoom),
old_statekey_,
nlohmann::json::object(),
[](const mtx::responses::EventId &, mtx::http::RequestErr e) {
if (e)
ChatPage::instance()->showNotification(
tr("Failed to delete old image pack: %1")
.arg(QString::fromStdString(e->matrix_error.error)));
});
old_statekey_ = statekey_;
}
void
SingleImagePackModel::addStickers(QList<QUrl> files)
{

View file

@ -70,6 +70,7 @@ public:
void setIsEmotePack(bool val);
Q_INVOKABLE void save();
Q_INVOKABLE void remove();
Q_INVOKABLE void addStickers(QList<QUrl> files);
Q_INVOKABLE void remove(int index);
Q_INVOKABLE void setAvatar(QUrl file);