diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Config.cpp | 1 | ||||
-rw-r--r-- | src/plugins/Matrix.cpp | 8 |
2 files changed, 6 insertions, 3 deletions
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; |