From 7b824d28849c7e3c1b247ef2f17ce0cfeba420ba Mon Sep 17 00:00:00 2001 From: Meng Li Date: Thu, 19 Nov 2020 22:52:20 +0900 Subject: [PATCH 1/2] Add isForceRefresh param for myInfo --- .../com/mushare/demoapp/data/LoginDataSource.kt | 17 ++++++++++------- .../mushare/demoapp/ui/login/ProfileActivity.kt | 17 ++++++++++------- .../java/com/mushare/plutosdk/Pluto+User.kt | 14 ++++++++++++++ 3 files changed, 34 insertions(+), 14 deletions(-) diff --git a/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt b/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt index d001bef..1f224cf 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/data/LoginDataSource.kt @@ -17,13 +17,16 @@ class LoginDataSource { //pluto?.registerByEmail(username, password, "Test", { //pluto?.resendValidationEmail(username, { pluto?.loginWithAccount(username, password, { - pluto.myInfo({ - val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), it.name) - onComplete(Result.Success(fakeUser)) - }, { - onComplete(Result.Error(IOException("Error getting account info $it"))) - Log.e("getInfo", "failed $it") - }) + pluto.myInfo( + success = { + val fakeUser = LoggedInUser(java.util.UUID.randomUUID().toString(), it.name) + onComplete(Result.Success(fakeUser)) + }, + error = { + onComplete(Result.Error(IOException("Error getting account info $it"))) + Log.e("getInfo", "failed $it") + } + ) }, { onComplete(Result.Error(IOException("Error logging in $it"))) Log.e("login", "failed $it") diff --git a/demoapp/src/main/java/com/mushare/demoapp/ui/login/ProfileActivity.kt b/demoapp/src/main/java/com/mushare/demoapp/ui/login/ProfileActivity.kt index 612d139..fbcfacf 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/ui/login/ProfileActivity.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/ui/login/ProfileActivity.kt @@ -114,14 +114,17 @@ class ProfileActivity : AppCompatActivity() { } private fun updateUserInfo(completion: (() -> Unit)? = null) { - Pluto.getInstance()?.myInfo(success = { user -> - nameEditText.get()?.setText(user.name) - userIdEditText.get()?.setText(user.userId) - avatarImageView.get()?.let { - Glide.with(this).load(user.avatar).into(it) + Pluto.getInstance()?.myInfo( + isForceRefresh = false, + success = { user -> + nameEditText.get()?.setText(user.name) + userIdEditText.get()?.setText(user.userId) + avatarImageView.get()?.let { + Glide.with(this).load(user.avatar).into(it) + } + completion?.let { it() } } - completion?.let { it() } - }) + ) } } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+User.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+User.kt index 0f784b5..2049f94 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+User.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+User.kt @@ -9,11 +9,25 @@ import retrofit2.Response import java.io.ByteArrayOutputStream import java.io.File +val Pluto.currentUser: PlutoUser? + get() { + if (state != Pluto.State.signin) { + return null + } + return data.user + } + fun Pluto.myInfo( + isForceRefresh: Boolean = false, success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null ) { + val currentUser = data.user + if (!isForceRefresh && currentUser != null) { + success(currentUser) + return + } getAuthorizationHeader( completion = { header -> if (header == null) { From 0158b465d0ff60d61b469aebf1a484ea8466e6d2 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Thu, 19 Nov 2020 22:57:28 +0900 Subject: [PATCH 2/2] Set init state by data.isTokenNull --- .../src/main/java/com/mushare/plutosdk/Pluto.kt | 4 +++- .../src/main/java/com/mushare/plutosdk/PlutoModel.kt | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt index 8aa9811..23a92d8 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto.kt @@ -32,7 +32,9 @@ class Pluto private constructor() { internal val data by lazy { PlutoModel(context) } - val state: MutableLiveData by lazy { MutableLiveData(State.loading) } + val state: MutableLiveData by lazy { + MutableLiveData(if (data.isTokenNull) State.notSignin else State.signin) + } internal val gson: Gson by lazy { GsonBuilder().serializeNulls().create() } internal val plutoService: PlutoService by lazy { diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt index 5218033..e439e5b 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoModel.kt @@ -77,6 +77,9 @@ internal class PlutoModel(context: Context) { infoJSONString = gson.toJson(value) } + val isTokenNull: Boolean + get() = accessToken == null || refreshToken == null + fun updateAccessToken(jwt: String): Boolean { val body = JwtUtils.decodeBody(jwt) ?: return false return try {