uses NcApiCoroutines now

Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
This commit is contained in:
rapterjet2004 2024-10-23 08:14:45 -05:00
parent 46efdf4b0c
commit d464d714ff
No known key found for this signature in database
GPG Key ID: 3AA5FDFED7944099
6 changed files with 41 additions and 58 deletions

View File

@ -110,4 +110,16 @@ interface NcApiCoroutines {
@DELETE @DELETE
suspend fun deleteConversationAvatar(@Header("Authorization") authorization: String, @Url url: String): RoomOverall suspend fun deleteConversationAvatar(@Header("Authorization") authorization: String, @Url url: String): RoomOverall
@POST
suspend fun archiveConversation(
@Header("Authorization") authorization: String?,
@Url url: String?
): GenericOverall
@DELETE
suspend fun unarchiveConversation(
@Header("Authorization") authorization: String?,
@Url url: String?
): GenericOverall
} }

View File

@ -24,6 +24,7 @@ import android.view.View.VISIBLE
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.FragmentTransaction import androidx.fragment.app.FragmentTransaction
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.lifecycle.lifecycleScope
import androidx.work.Data import androidx.work.Data
import androidx.work.OneTimeWorkRequest import androidx.work.OneTimeWorkRequest
import androidx.work.WorkManager import androidx.work.WorkManager
@ -85,6 +86,7 @@ import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.Subscribe import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode import org.greenrobot.eventbus.ThreadMode
import java.util.Calendar import java.util.Calendar
@ -746,16 +748,18 @@ class ConversationInfoActivity :
} }
binding.archiveConversationBtn.setOnClickListener { binding.archiveConversationBtn.setOnClickListener {
if (conversation!!.hasArchived) { this.lifecycleScope.launch {
viewModel.unarchiveConversation(conversationUser, conversationToken) if (conversation!!.hasArchived) {
binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.outline_archive_24)) viewModel.unarchiveConversation(conversationUser, conversationToken)
binding.archiveConversationText.text = resources.getString(R.string.archive_conversation) binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.outline_archive_24))
binding.archiveConversationTextHint.text = resources.getString(R.string.archive_hint) binding.archiveConversationText.text = resources.getString(R.string.archive_conversation)
} else { binding.archiveConversationTextHint.text = resources.getString(R.string.archive_hint)
viewModel.archiveConversation(conversationUser, conversationToken) } else {
binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.ic_eye)) viewModel.archiveConversation(conversationUser, conversationToken)
binding.archiveConversationText.text = resources.getString(R.string.unarchive_conversation) binding.archiveConversationIcon.setImageDrawable(resources.getDrawable(R.drawable.ic_eye))
binding.archiveConversationTextHint.text = resources.getString(R.string.unarchive_hint) binding.archiveConversationText.text = resources.getString(R.string.unarchive_conversation)
binding.archiveConversationTextHint.text = resources.getString(R.string.unarchive_hint)
}
} }
} }

View File

@ -202,54 +202,16 @@ class ConversationInfoViewModel @Inject constructor(
}) })
} }
fun archiveConversation(user: User, token: String) { suspend fun archiveConversation(user: User, token: String) {
val apiVersion = ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V1)) val apiVersion = ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V1))
val url = ApiUtils.getUrlForArchive(apiVersion, user.baseUrl, token) val url = ApiUtils.getUrlForArchive(apiVersion, user.baseUrl, token)
conversationsRepository.archiveConversation(user.getCredentials(), url) conversationsRepository.archiveConversation(user.getCredentials(), url)
.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<GenericOverall> {
override fun onSubscribe(p0: Disposable) {
// unused
}
override fun onError(e: Throwable) {
Log.d(TAG, "Error in archive $e")
}
override fun onComplete() {
// unused atm
}
override fun onNext(n: GenericOverall) {
Log.d(TAG, "Archived successful")
}
})
} }
fun unarchiveConversation(user: User, token: String) { suspend fun unarchiveConversation(user: User, token: String) {
val apiVersion = ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V1)) val apiVersion = ApiUtils.getConversationApiVersion(user, intArrayOf(ApiUtils.API_V4, ApiUtils.API_V1))
val url = ApiUtils.getUrlForArchive(apiVersion, user.baseUrl, token) val url = ApiUtils.getUrlForArchive(apiVersion, user.baseUrl, token)
conversationsRepository.unarchiveConversation(user.getCredentials(), url) conversationsRepository.unarchiveConversation(user.getCredentials(), url)
.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<GenericOverall> {
override fun onSubscribe(p0: Disposable) {
// unused
}
override fun onError(e: Throwable) {
Log.d(TAG, "Error in unarchive $e")
}
override fun onComplete() {
// unused atm
}
override fun onNext(n: GenericOverall) {
Log.d(TAG, "unArchived successful")
}
})
} }
inner class GetRoomObserver : Observer<ConversationModel> { inner class GetRoomObserver : Observer<ConversationModel> {

View File

@ -70,8 +70,11 @@ import okhttp3.OkHttpClient
class RepositoryModule { class RepositoryModule {
@Provides @Provides
fun provideConversationsRepository(ncApi: NcApi, userProvider: CurrentUserProviderNew): ConversationsRepository { fun provideConversationsRepository(
return ConversationsRepositoryImpl(ncApi, userProvider) ncApi: NcApi, ncApiCoroutines: NcApiCoroutines, userProvider:
CurrentUserProviderNew
): ConversationsRepository {
return ConversationsRepositoryImpl(ncApi, ncApiCoroutines, userProvider)
} }
@Provides @Provides

View File

@ -31,7 +31,7 @@ interface ConversationsRepository {
) )
fun resendInvitations(token: String): Observable<ResendInvitationsResult> fun resendInvitations(token: String): Observable<ResendInvitationsResult>
fun archiveConversation(credentials: String, url: String): Observable<GenericOverall> suspend fun archiveConversation(credentials: String, url: String): GenericOverall
fun unarchiveConversation(credentials: String, url: String): Observable<GenericOverall> suspend fun unarchiveConversation(credentials: String, url: String): GenericOverall
} }

View File

@ -9,6 +9,7 @@ package com.nextcloud.talk.repositories.conversations
import com.bluelinelabs.logansquare.LoganSquare import com.bluelinelabs.logansquare.LoganSquare
import com.nextcloud.talk.api.NcApi import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.api.NcApiCoroutines
import com.nextcloud.talk.data.user.model.User import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.models.json.conversations.password.PasswordOverall import com.nextcloud.talk.models.json.conversations.password.PasswordOverall
import com.nextcloud.talk.models.json.generic.GenericOverall import com.nextcloud.talk.models.json.generic.GenericOverall
@ -21,6 +22,7 @@ import io.reactivex.Observable
class ConversationsRepositoryImpl( class ConversationsRepositoryImpl(
private val api: NcApi, private val api: NcApi,
private val coroutineApi: NcApiCoroutines,
private val userProvider: CurrentUserProviderNew private val userProvider: CurrentUserProviderNew
) : ) :
ConversationsRepository { ConversationsRepository {
@ -90,12 +92,12 @@ class ConversationsRepositoryImpl(
} }
} }
override fun archiveConversation(credentials: String, url: String): Observable<GenericOverall> { override suspend fun archiveConversation(credentials: String, url: String): GenericOverall {
return api.archiveConversation(credentials, url) return coroutineApi.archiveConversation(credentials, url)
} }
override fun unarchiveConversation(credentials: String, url: String): Observable<GenericOverall> { override suspend fun unarchiveConversation(credentials: String, url: String): GenericOverall {
return api.unarchiveConversation(credentials, url) return coroutineApi.unarchiveConversation(credentials, url)
} }
private fun apiVersion(): Int { private fun apiVersion(): Int {