package com.gizwits.reactnativegizwitssdkv5 import com.facebook.react.bridge.Callback import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactContextBaseJavaModule import com.facebook.react.bridge.ReactMethod import com.facebook.react.bridge.ReadableMap import com.gizwits.smart.sdk.GizSDKManager import com.gizwits.smart.sdk.core.data.model.UserToken import com.google.gson.annotations.SerializedName import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.util.Date data class UpdateAuthorizeDataParams( @SerializedName("token") val token: String, @SerializedName("uid") val uid: String ) data class AccountInfoParams( @SerializedName("username") val username: String, @SerializedName("password") val password: String ) class RNGizUserManagerModule(reactContext: ReactApplicationContext) : ReactContextBaseJavaModule(reactContext) { override fun getName() = "RNGizUserManagerModule" @ReactMethod fun getAuthorizeData(options: ReadableMap, result: Callback) { val tokenInfo = GizSDKManager.getUserManager().getAuthorizeData() val authData = UpdateAuthorizeDataParams(tokenInfo?.token ?: "", tokenInfo?.userId ?: "") GizRNCallbackManager.callbackWithResult(callback = result, result = Result.success(authData)) } @ReactMethod fun updateAuthorizeData(options: ReadableMap, result: Callback) { var config = RNGizParamsChecker.check(options, result, UpdateAuthorizeDataParams::class.java) config?.let { // Date 暂时没有用到 GizSDKManager.getUserManager().updateAuthorizeData(UserToken(config.token, config.uid, Date())) GizRNCallbackManager.callbackWithResult(callback = result, result = Result.success(0)) } } @ReactMethod fun loginByAnonymous(options: ReadableMap, result: Callback) { CoroutineScope(Dispatchers.IO).launch { val res = GizSDKManager.getUserManager().loginByAnonymous() GizRNCallbackManager.callbackWithResult(callback = result, result = res) } } @ReactMethod fun logout(options: ReadableMap, result: Callback) { CoroutineScope(Dispatchers.IO).launch { val res = GizSDKManager.getUserManager().logout() GizRNCallbackManager.callbackWithResult(callback = result, result = res) } } @ReactMethod fun loginWithAccount(options: ReadableMap, result: Callback) { var config = RNGizParamsChecker.check(options, result, AccountInfoParams::class.java) config?.let { CoroutineScope(Dispatchers.IO).launch { val res = GizSDKManager.getUserManager().loginWithAccount(config.username, config.password) GizRNCallbackManager.callbackWithResult(callback = result, result = res) } } } @ReactMethod fun registerWithAccount(options: ReadableMap, result: Callback) { var config = RNGizParamsChecker.check(options, result, AccountInfoParams::class.java) config?.let { CoroutineScope(Dispatchers.IO).launch { val res = GizSDKManager.getUserManager().registerWithAccount(config.username, config.password) GizRNCallbackManager.callbackWithResult(callback = result, result = res) } } } }