summary refs log tree commit diff
path: root/src/Cache.cpp
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2022-02-12 18:52:47 +0000
committerGitHub <noreply@github.com>2022-02-12 18:52:47 +0000
commita930e3c804c56aeb4f8d336b19d4abcd699556d1 (patch)
tree73f06796cff7941b9f0e7ab2b2a9e59054da0afa /src/Cache.cpp
parentFix application name on Wayland in flatpak (diff)
parentHidden events: Refactor slightly for reusability (diff)
downloadnheko-a930e3c804c56aeb4f8d336b19d4abcd699556d1.tar.xz
Merge pull request #891 from tastytea/hidden-events-gui
Add GUI to change hidden events per room
Diffstat (limited to 'src/Cache.cpp')
-rw-r--r--src/Cache.cpp54
1 files changed, 40 insertions, 14 deletions
diff --git a/src/Cache.cpp b/src/Cache.cpp

index 9f3ada58..6bad336a 100644 --- a/src/Cache.cpp +++ b/src/Cache.cpp
@@ -173,24 +173,31 @@ Cache::isHiddenEvent(lmdb::txn &txn, } mtx::events::account_data::nheko_extensions::HiddenEvents hiddenEvents; - hiddenEvents.hidden_event_types = { - EventType::Reaction, EventType::CallCandidates, EventType::Unsupported}; + hiddenEvents.hidden_event_types = std::vector{ + EventType::Reaction, + EventType::CallCandidates, + EventType::Unsupported, + }; - if (auto temp = getAccountData(txn, mtx::events::EventType::NhekoHiddenEvents, "")) - hiddenEvents = - std::move(std::get<mtx::events::AccountDataEvent< - mtx::events::account_data::nheko_extensions::HiddenEvents>>(*temp) - .content); - if (auto temp = getAccountData(txn, mtx::events::EventType::NhekoHiddenEvents, room_id)) - hiddenEvents = - std::move(std::get<mtx::events::AccountDataEvent< - mtx::events::account_data::nheko_extensions::HiddenEvents>>(*temp) - .content); + if (auto temp = getAccountData(txn, mtx::events::EventType::NhekoHiddenEvents, "")) { + auto h = std::get< + mtx::events::AccountDataEvent<mtx::events::account_data::nheko_extensions::HiddenEvents>>( + *temp); + if (h.content.hidden_event_types) + hiddenEvents = std::move(h.content); + } + if (auto temp = getAccountData(txn, mtx::events::EventType::NhekoHiddenEvents, room_id)) { + auto h = std::get< + mtx::events::AccountDataEvent<mtx::events::account_data::nheko_extensions::HiddenEvents>>( + *temp); + if (h.content.hidden_event_types) + hiddenEvents = std::move(h.content); + } return std::visit( [hiddenEvents](const auto &ev) { - return std::any_of(hiddenEvents.hidden_event_types.begin(), - hiddenEvents.hidden_event_types.end(), + return std::any_of(hiddenEvents.hidden_event_types->begin(), + hiddenEvents.hidden_event_types->end(), [ev](EventType type) { return type == ev.type; }); }, e); @@ -1515,6 +1522,16 @@ Cache::saveState(const mtx::responses::Sync &res) for (const auto &ev : res.account_data.events) std::visit( [&txn, &accountDataDb](const auto &event) { + if constexpr (std::is_same_v< + std::remove_cv_t<std::remove_reference_t<decltype(event)>>, + AccountDataEvent< + mtx::events::account_data::nheko_extensions::HiddenEvents>>) { + if (!event.content.hidden_event_types) { + accountDataDb.del(txn, "im.nheko.hidden_events"); + return; + } + } + auto j = json(event); accountDataDb.put(txn, j["type"].get<std::string>(), j.dump()); }, @@ -1589,6 +1606,15 @@ Cache::saveState(const mtx::responses::Sync &res) for (const auto &evt : room.second.account_data.events) { std::visit( [&txn, &accountDataDb](const auto &event) { + if constexpr (std::is_same_v< + std::remove_cv_t<std::remove_reference_t<decltype(event)>>, + AccountDataEvent<mtx::events::account_data::nheko_extensions:: + HiddenEvents>>) { + if (!event.content.hidden_event_types) { + accountDataDb.del(txn, "im.nheko.hidden_events"); + return; + } + } auto j = json(event); accountDataDb.put(txn, j["type"].get<std::string>(), j.dump()); },