Branch on viewmodel...

This commit is contained in:
ganfra 2022-12-15 20:16:53 +01:00
parent 17e4c1bab2
commit 2ea87307a7
15 changed files with 232 additions and 115 deletions

View file

@ -1,26 +1,41 @@
package io.element.android.x
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import io.element.android.x.matrix.MatrixInstance
import com.airbnb.mvrx.MavericksState
import com.airbnb.mvrx.MavericksViewModel
import com.airbnb.mvrx.MavericksViewModelFactory
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import io.element.android.x.anvilannotations.ContributesViewModel
import io.element.android.x.core.di.daggerMavericksViewModelFactory
import io.element.android.x.di.AppScope
import io.element.android.x.features.messages.MessagesViewModel
import io.element.android.x.features.messages.model.MessagesViewState
import io.element.android.x.matrix.Matrix
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.launch
class MainViewModel : ViewModel() {
private val matrix = MatrixInstance.getInstance()
data class MainState(val fake: Boolean = false) : MavericksState
@ContributesViewModel(AppScope::class)
class MainViewModel @AssistedInject constructor(
private val matrix: Matrix,
@Assisted initialState: MainState
) : MavericksViewModel<MainState>(initialState) {
companion object : MavericksViewModelFactory<MainViewModel, MainState> by daggerMavericksViewModelFactory()
suspend fun isLoggedIn(): Boolean {
return matrix.isLoggedIn().first()
}
fun startSyncIfLogged(){
fun startSyncIfLogged() {
viewModelScope.launch {
if(!isLoggedIn()) return@launch
if (!isLoggedIn()) return@launch
matrix.activeClient().startSync()
}
}
fun stopSyncIfLogged(){
fun stopSyncIfLogged() {
viewModelScope.launch {
if (!isLoggedIn()) return@launch
matrix.activeClient().stopSync()