Files
Inbound20260114/app/src/main/java/com/sw/inbound/viewmodel/UserViewModel.kt
T

73 lines
2.2 KiB
Kotlin

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<User?>(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) {
}
}