temp message is added (values are still wrong)

Signed-off-by: Marcel Hibbe <dev@mhibbe.de>
This commit is contained in:
Marcel Hibbe 2024-12-04 10:30:51 +01:00
parent 80d2e75b60
commit 048551e9fb
No known key found for this signature in database
GPG Key ID: C793F8B59F43CE7B
4 changed files with 23 additions and 13 deletions

View File

@ -85,14 +85,14 @@ interface ChatMessageRepository : LifecycleAwareManager {
replyTo: Int, replyTo: Int,
sendWithoutNotification: Boolean, sendWithoutNotification: Boolean,
referenceId: String referenceId: String
): Flow<Result<ChatOverallSingleMessage>> ): Flow<Result<ChatMessage?>>
suspend fun addTemporaryMessage( suspend fun addTemporaryMessage(
message: CharSequence, message: CharSequence,
displayName: String, displayName: String,
replyTo: Int, replyTo: Int,
referenceId: String referenceId: String
): Flow<Result<ChatOverallSingleMessage>> ): Flow<Result<ChatMessage?>>
suspend fun editChatMessage(credentials: String, url: String, text: String): Flow<Result<ChatOverallSingleMessage>> suspend fun editChatMessage(credentials: String, url: String, text: String): Flow<Result<ChatOverallSingleMessage>>
} }

View File

@ -762,7 +762,7 @@ class OfflineFirstChatRepository @Inject constructor(
replyTo: Int, replyTo: Int,
sendWithoutNotification: Boolean, sendWithoutNotification: Boolean,
referenceId: String referenceId: String
): Flow<Result<ChatOverallSingleMessage>> = ): Flow<Result<ChatMessage?>> =
flow { flow {
try { try {
val response = network.sendChatMessage( val response = network.sendChatMessage(
@ -774,8 +774,12 @@ class OfflineFirstChatRepository @Inject constructor(
sendWithoutNotification, sendWithoutNotification,
referenceId referenceId
) )
emit(Result.success(response))
val chatMessageModel = response.ocs?.data?.asModel()
emit(Result.success(chatMessageModel))
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Error when sending message", e)
emit(Result.failure(e)) emit(Result.failure(e))
} }
} }
@ -803,7 +807,7 @@ class OfflineFirstChatRepository @Inject constructor(
displayName: String, displayName: String,
replyTo: Int, replyTo: Int,
referenceId: String referenceId: String
): Flow<Result<ChatOverallSingleMessage>> = ): Flow<Result<ChatMessage?>> =
flow { flow {
try { try {
val tempChatMessageEntity = createChatMessageEntity(internalConversationId, message.toString()) val tempChatMessageEntity = createChatMessageEntity(internalConversationId, message.toString())
@ -815,11 +819,13 @@ class OfflineFirstChatRepository @Inject constructor(
val tempChatMessageModel = tempChatMessageEntity.asModel() 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) _messageFlow.emit(triple)
// emit()
} catch (e: Exception) { } catch (e: Exception) {
Log.e(TAG, "Something went wrong when adding temporary message", e) Log.e(TAG, "Something went wrong when adding temporary message", e)
emit(Result.failure(e)) emit(Result.failure(e))
@ -855,11 +861,11 @@ class OfflineFirstChatRepository @Inject constructor(
parentMessageId = null, parentMessageId = null,
systemMessageType = ChatMessage.SystemMessageType.DUMMY, systemMessageType = ChatMessage.SystemMessageType.DUMMY,
replyable = false, replyable = false,
timestamp = 0, timestamp = System.currentTimeMillis(),
expirationTimestamp = 0, expirationTimestamp = 0,
actorDisplayName = "", actorDisplayName = "test",
lastEditActorType = null, lastEditActorType = null,
lastEditTimestamp = null, lastEditTimestamp = 0L,
renderMarkdown = true, renderMarkdown = true,
lastEditActorId = "", lastEditActorId = "",
lastEditActorDisplayName = "" lastEditActorDisplayName = ""

View File

@ -158,9 +158,11 @@ class MessageInputViewModel @Inject constructor(
referenceId referenceId
).collect { result -> ).collect { result ->
if (result.isSuccess) { if (result.isSuccess) {
Log.d(TAG, "bbbb") Log.d(TAG, "temp message ref id: " + (result.getOrNull()?.referenceId ?: "none"))
_sendChatMessageViewState.value = SendChatMessageSuccessState(message)
} else { } else {
Log.d(TAG, "xxxx") _sendChatMessageViewState.value = SendChatMessageErrorState(message)
} }
} }
} }
@ -188,7 +190,7 @@ class MessageInputViewModel @Inject constructor(
referenceId referenceId
).collect { result -> ).collect { result ->
if (result.isSuccess) { 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) _sendChatMessageViewState.value = SendChatMessageSuccessState(message)
} else { } else {

View File

@ -65,6 +65,7 @@ import com.nextcloud.talk.utils.preferences.AppPreferences
import dagger.Module import dagger.Module
import dagger.Provides import dagger.Provides
import okhttp3.OkHttpClient import okhttp3.OkHttpClient
import javax.inject.Singleton
@Module @Module
class RepositoryModule { class RepositoryModule {
@ -151,6 +152,7 @@ class RepositoryModule {
@Provides @Provides
fun provideInvitationsRepository(ncApi: NcApi): InvitationsRepository = InvitationsRepositoryImpl(ncApi) fun provideInvitationsRepository(ncApi: NcApi): InvitationsRepository = InvitationsRepositoryImpl(ncApi)
@Singleton
@Provides @Provides
fun provideOfflineFirstChatRepository( fun provideOfflineFirstChatRepository(
chatMessagesDao: ChatMessagesDao, chatMessagesDao: ChatMessagesDao,