From 048551e9fb46b98c6cd181ac4ed0104482300d01 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 4 Dec 2024 10:30:51 +0100 Subject: [PATCH] temp message is added (values are still wrong) Signed-off-by: Marcel Hibbe --- .../talk/chat/data/ChatMessageRepository.kt | 4 ++-- .../network/OfflineFirstChatRepository.kt | 22 ++++++++++++------- .../chat/viewmodels/MessageInputViewModel.kt | 8 ++++--- .../talk/dagger/modules/RepositoryModule.kt | 2 ++ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/ChatMessageRepository.kt b/app/src/main/java/com/nextcloud/talk/chat/data/ChatMessageRepository.kt index 26e08174e..218c3b658 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/ChatMessageRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/ChatMessageRepository.kt @@ -85,14 +85,14 @@ interface ChatMessageRepository : LifecycleAwareManager { replyTo: Int, sendWithoutNotification: Boolean, referenceId: String - ): Flow> + ): Flow> suspend fun addTemporaryMessage( message: CharSequence, displayName: String, replyTo: Int, referenceId: String - ): Flow> + ): Flow> suspend fun editChatMessage(credentials: String, url: String, text: String): Flow> } diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt index c1b96e61d..891cc7a61 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/OfflineFirstChatRepository.kt @@ -762,7 +762,7 @@ class OfflineFirstChatRepository @Inject constructor( replyTo: Int, sendWithoutNotification: Boolean, referenceId: String - ): Flow> = + ): Flow> = flow { try { val response = network.sendChatMessage( @@ -774,8 +774,12 @@ class OfflineFirstChatRepository @Inject constructor( sendWithoutNotification, referenceId ) - emit(Result.success(response)) + + val chatMessageModel = response.ocs?.data?.asModel() + + emit(Result.success(chatMessageModel)) } catch (e: Exception) { + Log.e(TAG, "Error when sending message", e) emit(Result.failure(e)) } } @@ -803,7 +807,7 @@ class OfflineFirstChatRepository @Inject constructor( displayName: String, replyTo: Int, referenceId: String - ): Flow> = + ): Flow> = flow { try { val tempChatMessageEntity = createChatMessageEntity(internalConversationId, message.toString()) @@ -815,11 +819,13 @@ class OfflineFirstChatRepository @Inject constructor( val tempChatMessageModel = tempChatMessageEntity.asModel() - // emit(Result.success(response)) + emit(Result.success(tempChatMessageModel)) - val triple = Triple(false, false, listOf(tempChatMessageModel)) + val triple = Triple(true, false, listOf(tempChatMessageModel)) _messageFlow.emit(triple) + // emit() + } catch (e: Exception) { Log.e(TAG, "Something went wrong when adding temporary message", e) emit(Result.failure(e)) @@ -855,11 +861,11 @@ class OfflineFirstChatRepository @Inject constructor( parentMessageId = null, systemMessageType = ChatMessage.SystemMessageType.DUMMY, replyable = false, - timestamp = 0, + timestamp = System.currentTimeMillis(), expirationTimestamp = 0, - actorDisplayName = "", + actorDisplayName = "test", lastEditActorType = null, - lastEditTimestamp = null, + lastEditTimestamp = 0L, renderMarkdown = true, lastEditActorId = "", lastEditActorDisplayName = "" diff --git a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt index be006f425..750d6fca0 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/viewmodels/MessageInputViewModel.kt @@ -158,9 +158,11 @@ class MessageInputViewModel @Inject constructor( referenceId ).collect { result -> if (result.isSuccess) { - Log.d(TAG, "bbbb") + Log.d(TAG, "temp message ref id: " + (result.getOrNull()?.referenceId ?: "none")) + + _sendChatMessageViewState.value = SendChatMessageSuccessState(message) } else { - Log.d(TAG, "xxxx") + _sendChatMessageViewState.value = SendChatMessageErrorState(message) } } } @@ -188,7 +190,7 @@ class MessageInputViewModel @Inject constructor( referenceId ).collect { result -> if (result.isSuccess) { - Log.d(TAG, "received ref id: " + (result.getOrNull()?.ocs?.data?.referenceId ?: "none")) + Log.d(TAG, "received ref id: " + (result.getOrNull()?.referenceId ?: "none")) _sendChatMessageViewState.value = SendChatMessageSuccessState(message) } else { diff --git a/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt b/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt index b81a1604b..32c4eff9e 100644 --- a/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt +++ b/app/src/main/java/com/nextcloud/talk/dagger/modules/RepositoryModule.kt @@ -65,6 +65,7 @@ import com.nextcloud.talk.utils.preferences.AppPreferences import dagger.Module import dagger.Provides import okhttp3.OkHttpClient +import javax.inject.Singleton @Module class RepositoryModule { @@ -151,6 +152,7 @@ class RepositoryModule { @Provides fun provideInvitationsRepository(ncApi: NcApi): InvitationsRepository = InvitationsRepositoryImpl(ncApi) + @Singleton @Provides fun provideOfflineFirstChatRepository( chatMessagesDao: ChatMessagesDao,