From aae86124822b0702007ffb3bb68de4ae633d7621 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Sun, 2 Feb 2020 16:26:34 +0100 Subject: [PATCH] use room rules for mentions --- CMakeLists.txt | 2 +- src/dialogs/RoomSettings.cpp | 52 +++++++++++++++++++++--------------- 2 files changed, 32 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 913666d5..6ce90790 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -334,7 +334,7 @@ if(USE_BUNDLED_MTXCLIENT) FetchContent_Declare( MatrixClient GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git - GIT_TAG c914f8bd042bf8c2d0ee499c0d89e010e8ba9180 + GIT_TAG ec569028ee7a5945bc5552858b2eac930c9d2871 ) FetchContent_MakeAvailable(MatrixClient) else() diff --git a/src/dialogs/RoomSettings.cpp b/src/dialogs/RoomSettings.cpp index 3a3cdbf5..69d5a9c2 100644 --- a/src/dialogs/RoomSettings.cpp +++ b/src/dialogs/RoomSettings.cpp @@ -225,18 +225,27 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) [this](const mtx::pushrules::PushRule &rule, mtx::http::RequestErr &err) { if (err) { if (err->status_code == boost::beast::http::status::not_found) - emit notifChanged(2); // all messages + http::client()->get_pushrules( + "global", + "room", + room_id_.toStdString(), + [this](const mtx::pushrules::PushRule &rule, + mtx::http::RequestErr &err) { + if (err) { + emit notifChanged(2); // all messages + return; + } + + if (rule.enabled) + emit notifChanged(1); // mentions only + }); return; } - if (rule.actions.size() == 1 && - std::holds_alternative( - rule.actions[0])) { - if (rule.conditions.empty()) - emit notifChanged(1); // mentions only - else - emit notifChanged(0); // muted - } + if (rule.enabled) + emit notifChanged(0); // muted + else + emit notifChanged(2); // all messages }); connect(notifCombo, QOverload::of(&QComboBox::activated), [this](int index) { @@ -264,6 +273,9 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) room_id, static_cast(err->status_code), err->matrix_error.error); + http::client()->delete_pushrules( + "global", "room", room_id, [room_id](mtx::http::RequestErr &) { + }); }); } else if (index == 1) { // mentions only @@ -271,28 +283,26 @@ RoomSettings::RoomSettings(const QString &room_id, QWidget *parent) mtx::pushrules::PushRule rule; rule.actions = {mtx::pushrules::actions::dont_notify{}}; http::client()->put_pushrules( - "global", - "override", - room_id, - rule, - [room_id](mtx::http::RequestErr &err) { + "global", "room", room_id, rule, [room_id](mtx::http::RequestErr &err) { if (err) nhlog::net()->error( "failed to set pushrule for room {}: {} {}", room_id, static_cast(err->status_code), err->matrix_error.error); + http::client()->delete_pushrules( + "global", + "override", + room_id, + [room_id](mtx::http::RequestErr &) {}); }); } else { // all messages http::client()->delete_pushrules( - "global", "override", room_id, [room_id](mtx::http::RequestErr &err) { - if (err) - nhlog::net()->error( - "failed to delete pushrule for room {}: {} {}", - room_id, - static_cast(err->status_code), - err->matrix_error.error); + "global", "override", room_id, [room_id](mtx::http::RequestErr &) { + http::client()->delete_pushrules( + "global", "room", room_id, [room_id](mtx::http::RequestErr &) { + }); }); } });