From 98d5b3da728f62ba0421d9a8fc6d90c8d118b501 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Tue, 20 May 2025 12:57:58 +0200 Subject: [PATCH] modify repo, repo implementation and viewModel Signed-off-by: sowjanyakch --- .../viewmodel/ConversationInfoViewModel.kt | 43 +++++++++++++++++++ .../conversations/ConversationsRepository.kt | 4 ++ .../ConversationsRepositoryImpl.kt | 18 ++++++++ .../java/com/nextcloud/talk/utils/ApiUtils.kt | 4 ++ 4 files changed, 69 insertions(+) diff --git a/app/src/main/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModel.kt b/app/src/main/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModel.kt index 0874b17bd..a977a22f1 100644 --- a/app/src/main/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModel.kt +++ b/app/src/main/java/com/nextcloud/talk/conversationinfo/viewmodel/ConversationInfoViewModel.kt @@ -134,6 +134,14 @@ class ConversationInfoViewModel @Inject constructor( val getProfileViewState: LiveData get() = _getProfileViewState + private val _markConversationAsSensitiveResult = MutableLiveData(MarkConversationAsSensitiveViewState.None) + val markAsSensitiveResult: LiveData + get() = _markConversationAsSensitiveResult + + private val _markConversationAsInsensitiveResult = MutableLiveData(MarkConversationAsInsensitiveViewState.None) + val markAsInsensitiveResult: LiveData + get() = _markConversationAsInsensitiveResult + fun getRoom(user: User, token: String) { _viewState.value = GetRoomStartState chatNetworkDataSource.getRoom(user, token) @@ -356,6 +364,29 @@ class ConversationInfoViewModel @Inject constructor( } } + fun markConversationAsSensitive(credentials: String, baseUrl: String, roomToken: String) { + viewModelScope.launch { + try { + val response = conversationsRepository.markConversationAsSensitive(credentials, baseUrl, roomToken) + _markConversationAsSensitiveResult.value = MarkConversationAsSensitiveViewState.Success(response.ocs?.meta?.statusCode!!) + } catch (exception: Exception) { + _markConversationAsSensitiveResult.value = MarkConversationAsSensitiveViewState.Error(exception.message.toString()) + } + } + } + + + fun markConversationAsInsensitive(credentials: String, baseUrl: String, roomToken:String){ + viewModelScope.launch { + try { + val response = conversationsRepository.markConversationAsInsensitive(credentials, baseUrl, roomToken) + _markConversationAsInsensitiveResult.value = MarkConversationAsInsensitiveViewState.Success(response.ocs?.meta?.statusCode!!) + } catch (exception: Exception) { + _markConversationAsInsensitiveResult.value = MarkConversationAsInsensitiveViewState.Error(exception.message.toString()) + } + } + } + inner class GetRoomObserver : Observer { override fun onSubscribe(d: Disposable) { // unused atm @@ -405,6 +436,18 @@ class ConversationInfoViewModel @Inject constructor( data class Error(val exception: Exception) : ClearChatHistoryViewState() } + sealed class MarkConversationAsSensitiveViewState{ + data object None: MarkConversationAsSensitiveViewState() + data class Success (val statusCode: Int): MarkConversationAsSensitiveViewState() + data class Error (val message:String): MarkConversationAsSensitiveViewState() + } + + sealed class MarkConversationAsInsensitiveViewState{ + data object None: MarkConversationAsInsensitiveViewState() + data class Success (val statusCode: Int): MarkConversationAsInsensitiveViewState() + data class Error (val message:String): MarkConversationAsInsensitiveViewState() + } + sealed class SetConversationReadOnlyViewState { data object None : SetConversationReadOnlyViewState() data object Success : SetConversationReadOnlyViewState() diff --git a/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepository.kt b/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepository.kt index 32a53e911..5bfbc0a9f 100644 --- a/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepository.kt +++ b/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepository.kt @@ -49,4 +49,8 @@ interface ConversationsRepository { suspend fun createRoom(credentials: String, url: String, body: CreateRoomRequest): RoomOverall suspend fun getProfile(credentials: String, url: String): Profile? + + suspend fun markConversationAsSensitive(credentials:String, baseUrl:String, roomToken:String) : GenericOverall + + suspend fun markConversationAsInsensitive(credentials: String, baseUrl:String, roomToken:String): GenericOverall } diff --git a/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepositoryImpl.kt b/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepositoryImpl.kt index d6e38753d..e8d18ea3d 100644 --- a/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepositoryImpl.kt +++ b/app/src/main/java/com/nextcloud/talk/repositories/conversations/ConversationsRepositoryImpl.kt @@ -121,6 +121,24 @@ class ConversationsRepositoryImpl( return coroutineApi.getProfile(credentials, url).ocs?.data } + override suspend fun markConversationAsSensitive( + credentials: String, + baseUrl: String, + roomToken: String + ):GenericOverall { + val url = ApiUtils.getUrlForSensitiveConversation(baseUrl, roomToken) + return coroutineApi.markConversationAsSensitive(credentials,url) + } + + override suspend fun markConversationAsInsensitive( + credentials: String, + baseUrl: String, + roomToken: String + ): GenericOverall { + val url = ApiUtils.getUrlForSensitiveConversation(baseUrl, roomToken) + return coroutineApi.markConversationAsInsensitive(credentials,url) + } + override suspend fun banActor( credentials: String, url: String, diff --git a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt index d27608b56..5044557dd 100644 --- a/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/utils/ApiUtils.kt @@ -477,6 +477,10 @@ object ApiUtils { return "$baseUrl$OCS_API_VERSION/apps/spreed/temp-user-avatar" } + fun getUrlForSensitiveConversation(baseUrl:String, roomToken: String): String{ + return "$baseUrl$OCS_API_VERSION/apps/spreed/api/v4/room/$roomToken/sensitive" + } + fun getUrlForUserFields(baseUrl: String): String { return "$baseUrl$OCS_API_VERSION/cloud/user/fields" }