diff options
Diffstat (limited to 'src/SingleImagePackModel.cpp')
-rw-r--r-- | src/SingleImagePackModel.cpp | 45 |
1 files changed, 33 insertions, 12 deletions
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) { |