From a6561435fc3139e5633cdae19c17d609674acb1d Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sat, 10 Oct 2020 21:37:13 +0900 Subject: [PATCH 1/3] Format code --- .../java/com/mushare/plutosdk/Pluto+Login.kt | 43 ++++++++++++++++--- .../java/com/mushare/plutosdk/Pluto+User.kt | 23 ++++++++-- 2 files changed, 57 insertions(+), 9 deletions(-) diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt index cc7f54f..8bae673 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/Pluto+Login.kt @@ -5,7 +5,14 @@ import retrofit2.Call import retrofit2.Callback import retrofit2.Response -fun Pluto.registerByEmail(address: String, password: String, name: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.registerByEmail( + address: String, + password: String, + name: String, + success: () -> Unit, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { plutoService.registerWithEmail(RegisterWithEmailPostData(address, password, name, appId), getLanguage()).apply { enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { @@ -31,7 +38,12 @@ fun Pluto.registerByEmail(address: String, password: String, name: String, succe } } -fun Pluto.resendValidationEmail(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.resendValidationEmail( + address: String, + success: () -> Unit, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { plutoService.resendValidationEmail(EmailPostData(address, appId), getLanguage()).apply { enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { @@ -57,7 +69,13 @@ fun Pluto.resendValidationEmail(address: String, success: () -> Unit, error: ((P } } -fun Pluto.loginWithAccount(address: String, password: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.loginWithAccount( + address: String, + password: String, + success: (() -> Unit)? = null, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { val deviceId = data.deviceID if (deviceId == null) { error?.invoke(PlutoError.badRequest) @@ -84,7 +102,12 @@ fun Pluto.loginWithAccount(address: String, password: String, success: (() -> Un } } -fun Pluto.loginWithGoogle(idToken: String, success: (() -> Unit)? = null, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.loginWithGoogle( + idToken: String, + success: (() -> Unit)? = null, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { val deviceId = data.deviceID if (deviceId == null) { error?.invoke(PlutoError.badRequest) @@ -111,7 +134,12 @@ fun Pluto.loginWithGoogle(idToken: String, success: (() -> Unit)? = null, error: } } -fun Pluto.resetPassword(address: String, success: () -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { +fun Pluto.resetPassword( + address: String, + success: () -> Unit, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { plutoService.resetPassword(EmailPostData(address, appId), getLanguage()).apply { enqueue(object : Callback { override fun onFailure(call: Call, t: Throwable) { @@ -142,7 +170,10 @@ fun Pluto.logout() { state.postValue(Pluto.State.notSignin) } -private fun Pluto.handleLogin(response: PlutoResponseWithBody, success: (() -> Unit)?, error: ((PlutoError) -> Unit)?) { +private fun Pluto.handleLogin( + response: PlutoResponseWithBody, + success: (() -> Unit)?, error: ((PlutoError) -> Unit)? +) { if (response.statusOK()) { val body = response.getBody() data.updateRefreshToken(body.refreshToken) 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 7f2afaa..f4c244f 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 @@ -3,7 +3,12 @@ package com.mushare.plutosdk import retrofit2.Call import retrofit2.Callback import retrofit2.Response -fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null) { + +fun Pluto.myInfo( + success: (PlutoUser) -> Unit, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { data.user?.let { success(it) return @@ -17,7 +22,10 @@ fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = error?.invoke(PlutoError.badRequest) } - override fun onResponse(call: Call>, response: Response>) { + override fun onResponse( + call: Call>, + response: Response> + ) { val plutoResponse = response.body() if (plutoResponse != null) { if (plutoResponse.statusOK()) { @@ -38,4 +46,13 @@ fun Pluto.myInfo(success: (PlutoUser) -> Unit, error: ((PlutoError) -> Unit)? = error?.invoke(PlutoError.notSignin) } }, handler) -} \ No newline at end of file +} + +fun Pluto.updateName( + name: String, + success: () -> Unit, + error: ((PlutoError) -> Unit)? = null, + handler: Pluto.PlutoRequestHandler? = null +) { + +} From 464166762289dbb0425ecf99441e0cd4d3661dd3 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sat, 10 Oct 2020 21:49:54 +0900 Subject: [PATCH 2/3] Implement updateName method --- .../java/com/mushare/plutosdk/Pluto+User.kt | 74 ++++++++++++++++--- .../java/com/mushare/plutosdk/PlutoService.kt | 13 +++- 2 files changed, 76 insertions(+), 11 deletions(-) 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 f4c244f..f310336 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 @@ -13,11 +13,20 @@ fun Pluto.myInfo( success(it) return } - getAuthorizationHeader({ header -> - if (header != null) { - plutoService.getAccountInfo(header).apply { + getAuthorizationHeader( + completion = { header -> + if (header == null) { + handler?.setCall(null) + error?.invoke(PlutoError.notSignin) + return@getAuthorizationHeader + } + + plutoService.getUserInfo(header).apply { enqueue(object : Callback> { - override fun onFailure(call: Call>, t: Throwable) { + override fun onFailure( + call: Call>, + t: Throwable + ) { t.printStackTrace() error?.invoke(PlutoError.badRequest) } @@ -34,18 +43,21 @@ fun Pluto.myInfo( error?.invoke(plutoResponse.errorCode()) } } else { - error?.invoke(parseErrorCodeFromErrorBody(response.errorBody(), gson)) + error?.invoke( + parseErrorCodeFromErrorBody( + response.errorBody(), + gson + ) + ) } } }) }.also { handler?.setCall(it) } - } else { - handler?.setCall(null) - error?.invoke(PlutoError.notSignin) - } - }, handler) + }, + handler = handler + ) } fun Pluto.updateName( @@ -54,5 +66,47 @@ fun Pluto.updateName( error: ((PlutoError) -> Unit)? = null, handler: Pluto.PlutoRequestHandler? = null ) { + getAuthorizationHeader( + completion = { header -> + if (header == null) { + handler?.setCall(null) + error?.invoke(PlutoError.notSignin) + return@getAuthorizationHeader + } + + val body = UpdateUserInfoPutData(name, null) + plutoService.updateUserInfo(body, header).apply { + enqueue(object : Callback { + override fun onFailure(call: Call, t: Throwable) { + t.printStackTrace() + error?.invoke(PlutoError.badRequest) + } + override fun onResponse( + call: Call, + response: Response + ) { + val plutoResponse = response.body() + if (plutoResponse != null) { + if (plutoResponse.statusOK()) { + success() + } else { + error?.invoke(plutoResponse.errorCode()) + } + } else { + error?.invoke( + parseErrorCodeFromErrorBody( + response.errorBody(), + gson + ) + ) + } + } + }) + }.also { + handler?.setCall(it) + } + }, + handler = handler + ) } diff --git a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt index 15532d0..76c423c 100644 --- a/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt +++ b/pluto-kotlin-client-sdk/src/main/java/com/mushare/plutosdk/PlutoService.kt @@ -39,9 +39,15 @@ interface PlutoService { ): Call> @GET("v1/user/info") - fun getAccountInfo( + fun getUserInfo( @HeaderMap authorizationHeader: Map ): Call> + + @PUT("v1/user/info") + fun updateUserInfo( + @Body body: UpdateUserInfoPutData, + @HeaderMap authorizationHeader: Map + ): Call } class RefreshAuthPostData( @@ -72,4 +78,9 @@ class LoginWithGooglePostData( @field:SerializedName("id_token") var idToken: String, @field:SerializedName("device_id") var deviceId: String, @field:SerializedName("app_id") var appId: String +) + +class UpdateUserInfoPutData( + @field:SerializedName("name") var name: String?, + @field:SerializedName("avatar") var avatar: String? ) \ No newline at end of file From 16b0e9e636dffb910c0ad15c475d43459a31dbb0 Mon Sep 17 00:00:00 2001 From: Meng Li Date: Sat, 10 Oct 2020 22:35:30 +0900 Subject: [PATCH 3/3] Test updating user name --- .../mushare/demoapp/ui/login/LoginActivity.kt | 13 ++++++--- .../demoapp/ui/login/ProfileActivity.kt | 29 ++++++++++++++++++- .../src/main/res/layout/activity_profile.xml | 19 +++++++++--- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt index 75e6789..652b30b 100644 --- a/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt +++ b/demoapp/src/main/java/com/mushare/demoapp/ui/login/LoginActivity.kt @@ -30,7 +30,7 @@ class LoginActivity : AppCompatActivity() { Pluto.initialize( this, - "https://staging.easyjapanese-api-gateway.mushare.cn/pluto-master/", + "https://beta-pluto.kaboocha.com/", "org.mushare.easyjapanese" ) @@ -104,9 +104,14 @@ class LoginActivity : AppCompatActivity() { } } - if (Pluto.getInstance()?.state == Pluto.State.signin) { - startActivity(Intent(this, ProfileActivity::class.java)) - } + Pluto.getInstance()?.state?.observe(this, Observer { + when (it) { + Pluto.State.signin -> { + startActivity(Intent(this, ProfileActivity::class.java)) + } + } + }) + } private fun updateUiWithUser(model: LoggedInUserView) { 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 7941f7e..80e9432 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 @@ -1,7 +1,9 @@ package com.mushare.demoapp.ui.login; import android.os.Bundle +import android.util.Log import android.widget.Button +import android.widget.EditText import android.widget.TextView import android.widget.Toast import androidx.appcompat.app.AppCompatActivity @@ -9,22 +11,47 @@ import com.mushare.demoapp.R import com.mushare.plutosdk.Pluto import com.mushare.plutosdk.getToken import com.mushare.plutosdk.myInfo +import com.mushare.plutosdk.updateName +import java.lang.ref.WeakReference class ProfileActivity : AppCompatActivity() { + companion object { + private val TAG = ProfileActivity::class.java.simpleName + } + + private lateinit var nameEditText: WeakReference + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_profile) + nameEditText = WeakReference(findViewById(R.id.profile_name)) + Pluto.getInstance()?.myInfo(success = { - findViewById(R.id.profile_name).text = it.name + nameEditText.get()?.setText(it.name) }) Pluto.getInstance()?.getToken(completion = { findViewById(R.id.profile_access_token).text = it ?: "Refresh failed" }) + findViewById