tmp
This commit is contained in:
parent
7898a51252
commit
8fbe3c0b7b
21 changed files with 359 additions and 35 deletions
|
|
@ -1,10 +1,24 @@
|
|||
package com.pixelized.biblib.ui.viewmodel
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Context
|
||||
import android.content.SharedPreferences
|
||||
import android.util.Log
|
||||
import androidx.core.content.edit
|
||||
import androidx.lifecycle.AndroidViewModel
|
||||
import androidx.lifecycle.LiveData
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import androidx.lifecycle.viewModelScope
|
||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||
import com.pixelized.biblib.data.network.query.AuthLoginQuery
|
||||
import com.pixelized.biblib.injection.inject
|
||||
import com.pixelized.biblib.network.client.IBibLibClient
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
class AuthenticationViewModel: ViewModel() {
|
||||
class AuthenticationViewModel(application: Application) : AndroidViewModel(application) {
|
||||
private val preferences = application.getSharedPreferences(SHARED_PREF, Context.MODE_PRIVATE)
|
||||
private val client: IBibLibClient by inject()
|
||||
|
||||
private val _login = MutableLiveData<String>()
|
||||
val login: LiveData<String> get() = _login
|
||||
|
|
@ -12,9 +26,17 @@ class AuthenticationViewModel: ViewModel() {
|
|||
private val _password = MutableLiveData<String>()
|
||||
val password: LiveData<String> get() = _password
|
||||
|
||||
private val _rememberCredential = MutableLiveData<Boolean>(false)
|
||||
private val _rememberCredential = MutableLiveData<Boolean>()
|
||||
val rememberCredential: LiveData<Boolean> get() = _rememberCredential
|
||||
|
||||
init {
|
||||
viewModelScope.launch(Dispatchers.Main) {
|
||||
_login.value = preferences.login
|
||||
_password.value = preferences.password
|
||||
_rememberCredential.value = preferences.rememberCredential
|
||||
}
|
||||
}
|
||||
|
||||
fun updateLogin(login: String) {
|
||||
_login.postValue(login)
|
||||
}
|
||||
|
|
@ -23,7 +45,54 @@ class AuthenticationViewModel: ViewModel() {
|
|||
_password.postValue(password)
|
||||
}
|
||||
|
||||
fun updateRememberCredential(credential: Boolean) {
|
||||
_rememberCredential.postValue(credential)
|
||||
fun updateRememberCredential(rememberCredential: Boolean) {
|
||||
_rememberCredential.postValue(rememberCredential)
|
||||
viewModelScope.launch {
|
||||
preferences.rememberCredential = rememberCredential
|
||||
if (rememberCredential.not()) {
|
||||
preferences.login = null
|
||||
preferences.password = null
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun register() {
|
||||
|
||||
}
|
||||
|
||||
fun login() {
|
||||
viewModelScope.launch(Dispatchers.IO) {
|
||||
if (rememberCredential.value == true) {
|
||||
preferences.login = login.value
|
||||
preferences.password = password.value
|
||||
}
|
||||
// TODO : validation !
|
||||
val query = AuthLoginQuery(
|
||||
username = login.value,
|
||||
password = password.value
|
||||
)
|
||||
// TODO : Repository (token management & co)
|
||||
val response = client.service.login(query)
|
||||
Log.e("pouet", response.toString())
|
||||
}
|
||||
}
|
||||
|
||||
private var SharedPreferences.login: String?
|
||||
get() = getString(REMEMBER_USER, null)
|
||||
set(value) = edit { putString(REMEMBER_USER, value) }
|
||||
|
||||
private var SharedPreferences.password: String?
|
||||
get() = getString(REMEMBER_PASSWORD, null)
|
||||
set(value) = edit { putString(REMEMBER_PASSWORD, value) }
|
||||
|
||||
private var SharedPreferences.rememberCredential: Boolean
|
||||
get() = getBoolean(REMEMBER_CREDENTIAL, false)
|
||||
set(value) = edit { putBoolean(REMEMBER_CREDENTIAL, value) }
|
||||
|
||||
companion object {
|
||||
const val SHARED_PREF = "BIB_LIB_SHARED_PREF"
|
||||
const val REMEMBER_CREDENTIAL = "REMEMBER_CREDENTIAL"
|
||||
const val REMEMBER_USER = "REMEMBER_USER"
|
||||
const val REMEMBER_PASSWORD = "REMEMBER_PASSWORD"
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue