diff --git a/app/src/main/java/com/gamedog/vididin/beans/User.kt b/app/src/main/java/com/gamedog/vididin/beans/User.kt index 40746fa..7530481 100644 --- a/app/src/main/java/com/gamedog/vididin/beans/User.kt +++ b/app/src/main/java/com/gamedog/vididin/beans/User.kt @@ -6,4 +6,5 @@ data class User( val token: String, val account: String, val createdAt: String, + val deviceUUId: String ) diff --git a/app/src/main/java/com/gamedog/vididin/login/LoginInfoSave.kt b/app/src/main/java/com/gamedog/vididin/login/LoginInfoSave.kt new file mode 100644 index 0000000..58ad7d1 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/login/LoginInfoSave.kt @@ -0,0 +1,23 @@ +package com.gamedog.vididin.login + +import com.gamedog.vididin.beans.User + +class LoginInfoSave { + + fun putUser(user: User?) { + UserLocalRepository.saveUser2Sp(user) + } + + fun getUser() = UserLocalRepository.getUserFromSp() + + + fun putToken(token: String?) { + UserLocalRepository.saveUserToken(token) + } + + fun getToken(): String? { + return UserLocalRepository.getUserToken() + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/login/LoginManager.kt b/app/src/main/java/com/gamedog/vididin/login/LoginManager.kt index 2007ddd..7df263a 100644 --- a/app/src/main/java/com/gamedog/vididin/login/LoginManager.kt +++ b/app/src/main/java/com/gamedog/vididin/login/LoginManager.kt @@ -1,7 +1,68 @@ package com.gamedog.vididin.core.login.login +import com.gamedog.vididin.beans.OnLoginStateEvent +import com.gamedog.vididin.beans.User +import com.gamedog.vididin.login.LoginInfoSave +import com.gamedog.vididin.login.OnLoginEvent +import com.gamedog.vididin.router.Router +import com.pengxr.modular.eventbus.generated.events.EventDefineOfUserEvents + + object LoginManager { + private val loginInfoSave by lazy { + LoginInfoSave() + } + + var user: User? = null + set(value) { + loginInfoSave.putUser(value) + field = value + } + + var token: String? = null + set(value) { + loginInfoSave.putToken(value) + field = value + } + + val isLogin: Boolean + get() = user != null + + + fun init() { + user = loginInfoSave.getUser() + token = loginInfoSave.getToken() + } + + + fun logout() { + user = null + token = null + EventDefineOfUserEvents.onLoginStatusChanged().post(OnLoginStateEvent(OnLoginEvent.LOGOUT)) + } + + + fun checkLogin(callback: (() -> Unit)? = null) { + if (isLogin) { + callback?.invoke() + } else { + Router.Mine.createMineFragment() + } + } + + fun putUser(user: User?) { + this.user = user + } + + fun putToken(token: String?) { + this.token = token + } + + + + + } diff --git a/app/src/main/java/com/gamedog/vididin/login/OnLoginEvent.kt b/app/src/main/java/com/gamedog/vididin/login/OnLoginEvent.kt new file mode 100644 index 0000000..31a2e79 --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/login/OnLoginEvent.kt @@ -0,0 +1,11 @@ +package com.gamedog.vididin.login + +data class OnLoginEvent(val status: Int) { + + fun isLogin(): Boolean = status == LOGIN + + companion object { + const val LOGIN = 1 + const val LOGOUT = 2 + } +} \ No newline at end of file diff --git a/app/src/main/java/com/gamedog/vididin/login/UserLocalRepository.kt b/app/src/main/java/com/gamedog/vididin/login/UserLocalRepository.kt new file mode 100644 index 0000000..25f281a --- /dev/null +++ b/app/src/main/java/com/gamedog/vididin/login/UserLocalRepository.kt @@ -0,0 +1,24 @@ +package com.gamedog.vididin.login + +import com.ama.core.architecture.util.SpUtil +import com.gamedog.vididin.beans.User + +object UserLocalRepository { + + fun getUserFromSp(): User? { + return SpUtil.instance().getObject(SpUtil.KEY_ACCOUNT) + } + + fun saveUser2Sp(account: User?) { + SpUtil.instance().putObject(SpUtil.KEY_ACCOUNT, account) + } + + fun getUserToken(): String? { + return SpUtil.instance().getObject(SpUtil.KEY_ACCOUNT_TOKEN) + } + + fun saveUserToken(token: String?) { + SpUtil.instance().putString(SpUtil.KEY_ACCOUNT_TOKEN, token) + } + +} \ No newline at end of file diff --git a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt index c0f1297..7bf973e 100644 --- a/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt +++ b/core/architecture/src/main/java/com/ama/core/architecture/util/SpUtil.kt @@ -15,7 +15,9 @@ import java.lang.reflect.Type class SpUtil private constructor(spFileName: String) { companion object { - const val KEY_X1 = "11111" + const val KEY_ACCOUNT = "KEY_ACCOUNT" + const val KEY_ACCOUNT_TOKEN = "KEY_ACCOUNT_TOKEN" + const val KEY_X2 = "22222" private const val DEFAULT_SP_NAME = "enhanced_prefs" @@ -47,7 +49,7 @@ class SpUtil private constructor(spFileName: String) { // ----------- 基本数据类型操作 ----------- - fun putString(key: String, value: String) { + fun putString(key: String, value: String?) { sharedPreferences.edit().putString(key, value).apply() }