From 121d7e6907ba611be57f66d1db4953cdbae1bea7 Mon Sep 17 00:00:00 2001 From: sowjanyakch Date: Mon, 18 Nov 2024 15:31:26 +0100 Subject: [PATCH] convert rxjava to coroutines - list bans Signed-off-by: sowjanyakch --- .../java/com/nextcloud/talk/api/NcApi.java | 1 - .../com/nextcloud/talk/api/NcApiCoroutines.kt | 8 ++++++ .../data/network/ChatNetworkDataSource.kt | 1 - .../chat/data/network/RetrofitChatNetwork.kt | 5 ---- .../viewmodel/ConversationInfoViewModel.kt | 27 ++++++------------- .../conversations/ConversationsRepository.kt | 2 ++ .../ConversationsRepositoryImpl.kt | 5 ++++ 7 files changed, 23 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/com/nextcloud/talk/api/NcApi.java b/app/src/main/java/com/nextcloud/talk/api/NcApi.java index 6567aab8e..e2b02f1c3 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApi.java +++ b/app/src/main/java/com/nextcloud/talk/api/NcApi.java @@ -25,7 +25,6 @@ import com.nextcloud.talk.models.json.notifications.NotificationOverall; import com.nextcloud.talk.models.json.opengraph.OpenGraphOverall; import com.nextcloud.talk.models.json.participants.AddParticipantOverall; import com.nextcloud.talk.models.json.participants.ParticipantsOverall; -import com.nextcloud.talk.models.json.participants.TalkBan; import com.nextcloud.talk.models.json.participants.TalkBanOverall; import com.nextcloud.talk.models.json.push.PushRegistrationOverall; import com.nextcloud.talk.models.json.reactions.ReactionsOverall; 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 0b5d51b62..2f6f96473 100644 --- a/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt +++ b/app/src/main/java/com/nextcloud/talk/api/NcApiCoroutines.kt @@ -12,6 +12,8 @@ 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 com.nextcloud.talk.models.json.participants.TalkBanOverall +import io.reactivex.Observable import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.http.Body @@ -130,6 +132,12 @@ interface NcApiCoroutines { @Field("internalNote") internalNote: String ): TalkBan + @GET + suspend fun listBans( + @Header("Authorization") authorization: String, + @Url url: String + ): TalkBanOverall + @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 ded1c8166..f97299c4b 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 @@ -64,6 +64,5 @@ interface ChatNetworkDataSource { fun createRoom(credentials: String, url: String, map: Map): Observable 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 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 b5057bd7a..84d00d4bd 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 @@ -14,7 +14,6 @@ import com.nextcloud.talk.models.json.chat.ChatOverallSingleMessage import com.nextcloud.talk.models.json.conversations.RoomOverall import com.nextcloud.talk.models.json.conversations.RoomsOverall import com.nextcloud.talk.models.json.generic.GenericOverall -import com.nextcloud.talk.models.json.participants.TalkBan import com.nextcloud.talk.models.json.reminder.Reminder import com.nextcloud.talk.utils.ApiUtils import io.reactivex.Observable @@ -180,10 +179,6 @@ class RetrofitChatNetwork(private val ncApi: NcApi) : ChatNetworkDataSource { return ncApi.editChatMessage(credentials, url, text).map { it } } - override fun listBans(credentials: String, url: String): Observable> { - return ncApi.listBans(credentials, url).map { it.ocs?.data } - } - 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 1e86d166c..9ab42244c 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 @@ -153,26 +153,15 @@ class ConversationInfoViewModel @Inject constructor( fun listBans(user: User, token: String) { val url = ApiUtils.getUrlForBans(user.baseUrl!!, token) - chatNetworkDataSource.listBans(user.getCredentials(), url) - .subscribeOn(Schedulers.io()) - ?.observeOn(AndroidSchedulers.mainThread()) - ?.subscribe(object : Observer> { - override fun onSubscribe(p0: Disposable) { - // unused atm - } + viewModelScope.launch{ + try{ + val listBans = conversationsRepository.listBans(user.getCredentials(), url) + _getTalkBanState.value = ListBansSuccessState(listBans) + }catch(exception:Exception){ + _getTalkBanState.value = ListBansErrorState + } - override fun onError(e: Throwable) { - _getTalkBanState.value = ListBansErrorState - } - - override fun onComplete() { - // unused atm - } - - override fun onNext(talkBans: List) { - _getTalkBanState.value = ListBansSuccessState(talkBans) - } - }) + } } fun banActor(user: User, token: String, actorType: String, actorId: String, internalNote: String) { 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 c9397280c..8fc2d9c4c 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 @@ -34,6 +34,8 @@ interface ConversationsRepository { internalNote: String ): TalkBan + suspend fun listBans(credentials: String, url: String): List + 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 1766f9a8a..58c3bca42 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 @@ -111,6 +111,11 @@ class ConversationsRepositoryImpl( return coroutineApi.banActor(credentials, url, actorType, actorId, internalNote) } + override suspend fun listBans(credentials: String, url: String): List { + val talkBanOverall = coroutineApi.listBans(credentials, url) + return talkBanOverall.ocs?.data!! + } + private fun apiVersion(): Int { return ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4)) }