From f0a020814794a14760d5aa90493117ea3667e61f Mon Sep 17 00:00:00 2001 From: dec05eba Date: Thu, 5 Oct 2023 23:37:52 +0200 Subject: Only decrypt gpg message in room list if its the latest message --- src/plugins/Matrix.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/plugins') diff --git a/src/plugins/Matrix.cpp b/src/plugins/Matrix.cpp index 13c6f4f..02fce63 100644 --- a/src/plugins/Matrix.cpp +++ b/src/plugins/Matrix.cpp @@ -333,7 +333,8 @@ namespace QuickMedia { case DecryptState::DECRYPTING: { if(decrypt_job->decrypt_state == MatrixChatBodyDecryptJob::DecryptState::DECRYPTED || decrypt_job->decrypt_state == MatrixChatBodyDecryptJob::DecryptState::FAILED_TO_DECRYPT) { decrypt_state = DecryptState::DECRYPTED; - widgets.body_item->set_description(std::move(decrypt_job->text)); + if(!room || room->gpg_decrypt_message_id == gpg_decrypt_message_id) + widgets.body_item->set_description(std::move(decrypt_job->text)); decrypt_job.reset(); } break; @@ -928,6 +929,7 @@ namespace QuickMedia { return; if(last_unread_message) { + ++room->gpg_decrypt_message_id; bool is_window_focused = program->is_window_focused(); RoomData *current_room = program->get_current_chat_room(); Body *chat_body = chat_page ? chat_page->chat_body : nullptr; @@ -957,7 +959,7 @@ namespace QuickMedia { room->body_item->set_description(std::move(room_desc)); room->body_item->set_description_max_lines(3); if(should_message_by_decrypted(room->body_item->get_description())) - room->body_item->extra = std::make_shared(matrix, room->body_item->get_description()); + room->body_item->extra = std::make_shared(matrix, room->body_item->get_description(), room, room->gpg_decrypt_message_id); if(set_room_as_unread) room->body_item->set_title_color(get_theme().attention_alert_text_color, true); room->last_message_read = false; @@ -965,12 +967,13 @@ namespace QuickMedia { rooms_page->move_room_to_top(room); room_tags_page->move_room_to_top(room); } else if(last_new_message) { + ++room->gpg_decrypt_message_id; room->offset_to_latest_message_text = 0; room->body_item->set_description(extract_first_line_remove_newline_elipses(matrix->message_get_author_displayname(last_new_message.get()), AUTHOR_MAX_LENGTH) + ": " + message_to_room_description_text(matrix, last_new_message.get(), custom_emoji_max_size)); room->body_item->set_description_color(get_theme().faded_text_color); room->body_item->set_description_max_lines(3); if(should_message_by_decrypted(room->body_item->get_description())) - room->body_item->extra = std::make_shared(matrix, room->body_item->get_description()); + room->body_item->extra = std::make_shared(matrix, room->body_item->get_description(), room, room->gpg_decrypt_message_id); rooms_page->move_room_to_top(room); room_tags_page->move_room_to_top(room); -- cgit v1.2.3