From 7ae39bfcd22dcb2f1119769a3fcf5c24ccfdad66 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 18 Nov 2024 15:13:01 +0100 Subject: [PATCH] convert rxjava to coroutines - ban actor Signed-off-by: sowjanyakch --- .../com/nextcloud/talk/api/NcApiCoroutines.kt | 11 ++++++ .../data/network/ChatNetworkDataSource.kt | 8 ----- .../chat/data/network/RetrofitChatNetwork.kt | 10 ------ .../viewmodel/ConversationInfoViewModel.kt | 34 ++++++++----------- .../conversations/ConversationsRepository.kt | 11 ++++++ .../ConversationsRepositoryImpl.kt | 11 ++++++ 6 files changed, 47 insertions(+), 38 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt b/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt index 1970d2eed..0b5d51b62 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt +++ b/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt @@ -11,6 +11,7 @@ import com.nextcloud.talk.models.json.autocomplete.AutocompleteOverall import com.nextcloud.talk.models.json.conversations.RoomOverall import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.models.json.participants.AddParticipantOverall +import com.nextcloud.talk.models.json.participants.TalkBan import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.Body @@ -119,6 +120,16 @@ interface NcApiCoroutines { @DELETE suspend fun unarchiveConversation(@Header("Authorization") authorization: String, @Url url: String): GenericOverall + @FormUrlEncoded + @POST + suspend fun banActor( + @Header("Authorization") authorization: String, + @Url url: String, + @Field("actorType") actorType: String, + @Field("actorId") actorId: String, + @Field("internalNote") internalNote: String + ): TalkBan + @POST suspend fun addConversationToFavorites( @Header("Authorization") authorization: String, diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/ChatNetworkDataSource.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/ChatNetworkDataSource.kt index f18292917..ded1c8166 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/ChatNetworkDataSource.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/ChatNetworkDataSource.kt @@ -65,13 +65,5 @@ interface ChatNetworkDataSource { fun setChatReadMarker(credentials: String, url: String, previousMessageId: Int): Observable fun editChatMessage(credentials: String, url: String, text: String): Observable fun listBans(credentials: String, url: String): Observable> - fun banActor( - credentials: String, - url: String, - actorType: String, - actorId: String, - internalNote: String - ): Observable - fun unbanActor(credentials: String, url: String): Observable } diff --git a/app/src/main/java/com/nextcloud/talk/chat/data/network/RetrofitChatNetwork.kt b/app/src/main/java/com/nextcloud/talk/chat/data/network/RetrofitChatNetwork.kt index 774a6d423..b5057bd7a 100644 --- a/app/src/main/java/com/nextcloud/talk/chat/data/network/RetrofitChatNetwork.kt +++ b/app/src/main/java/com/nextcloud/talk/chat/data/network/RetrofitChatNetwork.kt @@ -184,16 +184,6 @@ class RetrofitChatNetwork(private val ncApi: NcApi) : ChatNetworkDataSource { return ncApi.listBans(credentials, url).map { it.ocs?.data } } - override fun banActor( - credentials: String, - url: String, - actorType: String, - actorId: String, - internalNote: String - ): Observable { - return ncApi.banActor(credentials, url, actorType, actorId, internalNote) - } - override fun unbanActor(credentials: String, url: String): Observable { return ncApi.unbanActor(credentials, url) } 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 b6b4ef288..1e86d166c 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 @@ -177,26 +177,20 @@ class ConversationInfoViewModel @Inject constructor( fun banActor(user: User, token: String, actorType: String, actorId: String, internalNote: String) { val url = ApiUtils.getUrlForBans(user.baseUrl!!, token) - chatNetworkDataSource.banActor(user.getCredentials(), url, actorType, actorId, internalNote) - .subscribeOn(Schedulers.io()) - ?.observeOn(AndroidSchedulers.mainThread()) - ?.subscribe(object : Observer { - override fun onSubscribe(p0: Disposable) { - // unused atm - } - - override fun onError(e: Throwable) { - _getBanActorState.value = BanActorErrorState - } - - override fun onComplete() { - // unused atm - } - - override fun onNext(talkBan: TalkBan) { - _getBanActorState.value = BanActorSuccessState(talkBan) - } - }) + viewModelScope.launch { + try { + val talkBan = conversationsRepository.banActor( + user.getCredentials(), + url, + actorType, + actorId, + internalNote + ) + _getBanActorState.value = BanActorSuccessState(talkBan) + } catch (exception: Exception) { + _getBanActorState.value = BanActorErrorState + } + } } fun setConversationReadOnly(roomToken: String, state: Int) { 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 75d373dd6..c9397280c 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 @@ -8,6 +8,7 @@ package com.nextcloud.talk.repositories.conversations import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.models.json.participants.TalkBan import io.reactivex.Observable interface ConversationsRepository { @@ -23,6 +24,16 @@ interface ConversationsRepository { suspend fun unarchiveConversation(credentials: String, url: String): GenericOverall + fun setConversationReadOnly(credentials: String, url: String, state: Int): Observable + + suspend fun banActor( + credentials: String, + url: String, + actorType: String, + actorId: String, + internalNote: String + ): TalkBan + suspend fun setPassword(password: String, token: String): GenericOverall suspend fun setConversationReadOnly(roomToken: String, state: Int): 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 2d7fa0609..1766f9a8a 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 @@ -11,6 +11,7 @@ import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApiCoroutines import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.models.json.generic.GenericOverall +import com.nextcloud.talk.models.json.participants.TalkBan import com.nextcloud.talk.repositories.conversations.ConversationsRepository.ResendInvitationsResult import com.nextcloud.talk.utils.ApiUtils import com.nextcloud.talk.utils.database.user.CurrentUserProviderNew @@ -100,6 +101,16 @@ class ConversationsRepositoryImpl( ) } + override suspend fun banActor( + credentials: String, + url: String, + actorType: String, + actorId: String, + internalNote: String + ): TalkBan { + return coroutineApi.banActor(credentials, url, actorType, actorId, internalNote) + } + private fun apiVersion(): Int { return ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4)) }