Skip to content

Commit b20e722

Browse files
authored
Merge pull request #5745 from kikoso/fix/5665-quoted-message-disappearing
fix: quoted message disappearing after editing a reply (#5665)
2 parents 221d5bd + 29f65a3 commit b20e722

File tree

4 files changed

+24
-1
lines changed

4 files changed

+24
-1
lines changed

app/src/main/java/com/nextcloud/talk/chat/ChatActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4306,7 +4306,7 @@ class ChatActivity :
43064306
messageTemp.message = newString
43074307

43084308
val index = adapter?.getMessagePositionById(messageTemp.id)!!
4309-
if (index > 0) {
4309+
if (index >= 0) {
43104310
val adapterMsg = adapter?.items?.get(index)?.item as ChatMessage
43114311
messageTemp.parentMessageId = adapterMsg.parentMessageId
43124312
}

app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -696,6 +696,14 @@ class OfflineFirstChatRepository @Inject constructor(
696696
messageJson.parentMessage?.let { parentMessageJson ->
697697
parentMessageJson.message?.let {
698698
val parentMessageEntity = parentMessageJson.asEntity(currentUser.id!!)
699+
700+
// Preserve parentMessageId if missing in server response but present in local DB
701+
val existingEntity =
702+
chatDao.getChatMessageEntity(internalConversationId, parentMessageJson.id)
703+
if (existingEntity != null && parentMessageEntity.parentMessageId == null) {
704+
parentMessageEntity.parentMessageId = existingEntity.parentMessageId
705+
}
706+
699707
chatDao.upsertChatMessage(parentMessageEntity)
700708
_updateMessageFlow.emit(parentMessageEntity.asModel())
701709
}

app/src/main/java/com/nextcloud/talk/data/database/dao/ChatMessagesDao.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,16 @@ interface ChatMessagesDao {
8989
)
9090
fun getChatMessageForConversation(internalConversationId: String, messageId: Long): Flow<ChatMessageEntity>
9191

92+
@Query(
93+
"""
94+
SELECT *
95+
FROM ChatMessages
96+
WHERE internalConversationId = :internalConversationId
97+
AND id = :messageId
98+
"""
99+
)
100+
suspend fun getChatMessageEntity(internalConversationId: String, messageId: Long): ChatMessageEntity?
101+
92102
@Query(
93103
value = """
94104
DELETE FROM ChatMessages

app/src/main/java/com/nextcloud/talk/utils/preview/ComposePreviewUtilsDaos.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,11 @@ class DummyChatMessagesDaoImpl : ChatMessagesDao {
5151
messageId: Long
5252
): Flow<ChatMessageEntity> = flowOf()
5353

54+
override suspend fun getChatMessageEntity(
55+
internalConversationId: String,
56+
messageId: Long
57+
): ChatMessageEntity? = null
58+
5459
override fun deleteChatMessages(internalIds: List<String>) { /* */ }
5560

5661
override fun deleteTempChatMessages(internalConversationId: String, referenceIds: List<String>) { /* */ }

0 commit comments

Comments
 (0)