diff --git a/src/SingleImagePackModel.cpp b/src/SingleImagePackModel.cpp
index 1adfdaa2..95a863d3 100644
--- a/src/SingleImagePackModel.cpp
+++ b/src/SingleImagePackModel.cpp
@@ -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(
@@ -315,6 +305,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)
{
for (const auto &f : files) {
|