Skip to content

Commit

Permalink
WIP implemented viewModel + repo
Browse files Browse the repository at this point in the history
Signed-off-by: rapterjet2004 <[email protected]>
  • Loading branch information
rapterjet2004 committed Oct 4, 2023
1 parent 1dbbee9 commit bd0687a
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 4 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.nextcloud.talk.translate.repositories

import com.nextcloud.talk.translate.repositories.model.LanguageModel
import io.reactivex.Observable

interface TranslateRepository {
Expand All @@ -11,4 +12,9 @@ interface TranslateRepository {
toLanguage: String,
fromLanguage: String?
): Observable<String>

fun getLanguages(
authorization: String,
url: String,
): Observable<Array<LanguageModel>>
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.nextcloud.talk.translate.repositories

import com.nextcloud.talk.api.NcApi
import com.nextcloud.talk.translate.repositories.model.LanguageModel
import io.reactivex.Observable
import javax.inject.Inject

Expand All @@ -15,4 +16,8 @@ class TranslateRepositoryImpl @Inject constructor(private val ncApi: NcApi) : Tr
): Observable<String> {
return ncApi.translateMessage(authorization, url, text, toLanguage, fromLanguage).map { it.ocs?.data!!.text }
}

override fun getLanguages(authorization: String, url: String): Observable<Array<LanguageModel>> {
return ncApi.getLanguages(authorization, url).map { it.ocs?.data?.languages }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class TranslateActivity : BaseActivity() {
onTranslatedState(state.msg)
}

is TranslateViewModel.ErrorState -> {
is TranslateViewModel.TranslationErrorState -> {
onErrorState()
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
import com.nextcloud.talk.data.user.model.User
import com.nextcloud.talk.translate.repositories.TranslateRepository
import com.nextcloud.talk.translate.repositories.model.LanguageModel
import com.nextcloud.talk.users.UserManager
import com.nextcloud.talk.utils.ApiUtils
import io.reactivex.Observer
Expand All @@ -21,9 +22,14 @@ class TranslateViewModel @Inject constructor(

sealed interface ViewState

object StartState : ViewState
data object StartState : ViewState
class TranslatedState(val msg: String) : ViewState
object ErrorState : ViewState

class LanguagesRetrievedState(val array: Array<LanguageModel>) : ViewState

data object LanguagesErrorState : ViewState

data object TranslationErrorState : ViewState

private val _viewState: MutableLiveData<ViewState> = MutableLiveData(StartState)
val viewState: LiveData<ViewState>
Expand All @@ -47,6 +53,33 @@ class TranslateViewModel @Inject constructor(
?.subscribe(TranslateObserver())
}

fun getLanguages() {
val currentUser: User = userManager.currentUser.blockingGet()
val authorization: String = ApiUtils.getCredentials(currentUser.username, currentUser.token)
val url: String = ApiUtils.getUrlForLanguages(currentUser.baseUrl)
repository.getLanguages(authorization, url)
.subscribeOn(Schedulers.io())
?.observeOn(AndroidSchedulers.mainThread())
?.subscribe(object : Observer<Array<LanguageModel>> {
override fun onSubscribe(d: Disposable) {
// unused atm
}

override fun onError(e: Throwable) {
_viewState.value = LanguagesErrorState
Log.e(TAG, "Error while retrieving languages")
}

override fun onComplete() {
// unused atm
}

override fun onNext(array: Array<LanguageModel>) {
_viewState.value = LanguagesRetrievedState(array)
}
})
}

inner class TranslateObserver : Observer<String> {
override fun onSubscribe(d: Disposable) {
_viewState.value = StartState
Expand All @@ -57,7 +90,7 @@ class TranslateViewModel @Inject constructor(
}

override fun onError(e: Throwable) {
_viewState.value = ErrorState
_viewState.value = TranslationErrorState
Log.e(TAG, "Error while translating message", e)
}

Expand Down
4 changes: 4 additions & 0 deletions app/src/main/java/com/nextcloud/talk/utils/ApiUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -531,6 +531,10 @@ public static String getUrlForTranslation(String baseUrl) {
return baseUrl + ocsApiVersion + "/translation/translate";
}

public static String getUrlForLanguages(String baseUrl) {
return baseUrl + ocsApiVersion + "/translation/languages";
}

public static String getUrlForReminder(User user, String roomToken, String messageId, int version) {
String url = ApiUtils.getUrlForChatMessage(version, user.getBaseUrl(), roomToken, messageId);
return url + "/reminder";
Expand Down

0 comments on commit bd0687a

Please sign in to comment.