package com.sw.inbound.viewmodel import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import com.sw.inbound.GlobalData import com.sw.inbound.GlobalKey import com.sw.inbound.model.request.LoginParam import com.sw.inbound.model.response.User import com.sw.inbound.repository.RemoteRepository import com.sw.inbound.utils.GsonUtils import com.sw.inbound.utils.SPUtil import dagger.hilt.android.lifecycle.HiltViewModel import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import timber.log.Timber import javax.inject.Inject @HiltViewModel class UserViewModel @Inject constructor( private val repo: RemoteRepository ) : BaseViewModel(repo) { // private var isFirstLaunch by mutableStateOf(true) private val _user = MutableStateFlow(null) val user = _user.asStateFlow() fun getInitInfo() { // Timber.d("getInitInfo isFirstLaunch = $isFirstLaunch") //if (isFirstLaunch) { // getUserInfo() getDictType() // isFirstLaunch = false //} } fun login(userName: String, password: String) = launchWithLoading { val loginParam = LoginParam(userName = userName, password = password) val response = repo.login(loginParam) if (parseResponse(response)) { SPUtil.getInstance().put(GlobalKey.KEY_USER_NAME, userName) _user.value = response.result saveToken(response.result) response.result?.token } } fun getUserInfo() { val userInfo = SPUtil.getInstance().get(GlobalKey.KEY_USER_INFO, "") if (userInfo != null) { _user.value = GsonUtils.fromJson(userInfo, User::class.java) } } private fun saveToken(user: User?) { user?.let { SPUtil.getInstance().put(GlobalKey.KEY_USER_INFO, GsonUtils.toJson(it)) SPUtil.getInstance().put(GlobalKey.KEY_TOKEN, it.token) GlobalData.appToken = it.token?:"" } } fun logout() { SPUtil.getInstance().remove(GlobalKey.KEY_USER_INFO) SPUtil.getInstance().remove(GlobalKey.KEY_TOKEN) } override fun handleSensorScale(weight: Double) { } }