From 913e40f114fb6e18f495ca65e5f332ef37a320f9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sun, 5 Nov 2023 18:17:23 +0100 Subject: Matrix: add config option 'appear_online' to set online presence --- src/Config.cpp | 1 + src/plugins/Matrix.cpp | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/Config.cpp b/src/Config.cpp index a17e883..e8f67f6 100644 --- a/src/Config.cpp +++ b/src/Config.cpp @@ -242,6 +242,7 @@ namespace QuickMedia { get_json_value(matrix_json, "room_description_font_size", config->matrix.room_description_font_size); get_json_value(matrix_json, "send_read_receipts", config->matrix.send_read_receipts); get_json_value(matrix_json, "send_typing_notifications", config->matrix.send_typing_notifications); + get_json_value(matrix_json, "appear_online", config->matrix.appear_online); } if(!has_known_matrix_homeservers_config) diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp index 4ec7f35..5882653 100644 --- a/src/plugins/Matrix.cpp +++ b/src/plugins/Matrix.cpp @@ -1745,14 +1745,16 @@ namespace QuickMedia { else filter_encoded = url_param_encode(CONTINUE_FILTER); + const char *presence = ::QuickMedia::get_config().matrix.appear_online ? "online" : "offline"; + while(sync_running) { char url[2048]; if(next_batch.empty()) - snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=0", homeserver.c_str(), filter_encoded.c_str()); + snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=0&set_presence=%s", homeserver.c_str(), filter_encoded.c_str(), presence); else if(first_sync) - snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=0&since=%s", homeserver.c_str(), filter_encoded.c_str(), next_batch.c_str()); + snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=0&since=%s&set_presence=%s", homeserver.c_str(), filter_encoded.c_str(), next_batch.c_str(), presence); else - snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=30000&since=%s", homeserver.c_str(), filter_encoded.c_str(), next_batch.c_str()); + snprintf(url, sizeof(url), "%s/_matrix/client/r0/sync?filter=%s&timeout=30000&since=%s&set_presence=%s", homeserver.c_str(), filter_encoded.c_str(), next_batch.c_str(), presence); rapidjson::Document json_root; std::string err_msg; -- cgit v1.2.3