package mx.trackermap.TrackerMap.android.session import androidx.lifecycle.MutableLiveData import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.zhuinden.eventemitter.EventEmitter import com.zhuinden.eventemitter.EventSource import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch import mx.trackermap.TrackerMap.client.models.SessionBody import mx.trackermap.TrackerMap.controllers.SessionController import org.koin.core.component.KoinComponent import org.koin.core.component.inject @DelicateCoroutinesApi class LoginViewModel : ViewModel(), KoinComponent { private val sessionController: SessionController by inject() private val loginStateEmitter = EventEmitter() val loginState: EventSource = loginStateEmitter init { viewModelScope.launch { setupLoginStateObserver() } } private suspend fun setupLoginStateObserver() { sessionController.loginStateFlow.collect { it?.let { loginStateEmitter.emit(it) } } } fun restoreSession() { sessionController.restoreSession() } fun login(email: String, password: String, token: String?) { sessionController.login(SessionBody(email, password, token)) } }