yayan 11 miesięcy temu
rodzic
commit
644676e8c1

+ 2 - 3
app/src/main/java/io/nexilis/alpha/ui/main/Sign.kt

@@ -20,8 +20,8 @@ import androidx.compose.ui.text.input.VisualTransformation
 import androidx.compose.ui.unit.dp
 import androidx.hilt.navigation.compose.hiltViewModel
 import androidx.navigation.NavHostController
+import io.nexilis.service.core.api
 import io.nexilis.service.core.pref
-import io.nexilis.service.core.optString
 import io.nexilis.service.data.viewmodels.BuddyViewModel
 
 @Composable
@@ -178,8 +178,7 @@ fun SignIn(navController: NavHostController, completion: (Boolean) -> Unit) {
         )
         Spacer(modifier = Modifier.size(8.dp))
         Button(onClick = {
-            val api = context.pref().optString("api", "")
-            viewModel.signIn(api, textUsername.text, textPassword.text) { r, pin ->
+            viewModel.signIn(context.pref().api, textUsername.text, textPassword.text) { r, pin ->
                 completion(r)
             }
         }) {

+ 21 - 23
cpaas-lite/src/main/java/io/nexilis/service/Api.kt

@@ -15,11 +15,13 @@ import com.google.firebase.initialize
 import io.newuniverse.SDK.nuSDKService
 import io.nexilis.service.core.Data
 import io.nexilis.service.core.Network
+import io.nexilis.service.core.api
 import io.nexilis.service.core.decrypt
 import io.nexilis.service.core.domain
+import io.nexilis.service.core.isLogin
 import io.nexilis.service.core.pref
-import io.nexilis.service.core.optString
-import io.nexilis.service.core.put
+import io.nexilis.service.core.pin
+import io.nexilis.service.core.session
 import kotlinx.coroutines.launch
 import org.json.JSONObject
 import java.security.SecureRandom
@@ -67,12 +69,10 @@ class Api {
                         Thread.sleep(100)
                     }
                     val preferences = activity.pref()
-                    preferences.put(key = "api", value = account)
+                    preferences.api = account
                     val random =
                         String.format(Locale.getDefault(), "%010d", SecureRandom().nextInt(Int.MAX_VALUE))
-                    val session = preferences.optString(
-                        key = "session", default = random
-                    )
+                    val session = preferences.session.ifEmpty { random }
                     Log.d(tag, "initConnection:$pass,$account,$activity,$session")
                     nuSDKService.getInstance(pass).initConnection(
                         pass,
@@ -90,8 +90,7 @@ class Api {
                     val signature: String = nuSDKService.getInstance(pass).sGetSignature()
                     if ("1,1,1,1,1,1,1,1,1,1,1,1" != signature) nuSDKService.getInstance(pass)
                         .UpdateSignature()
-                    val pin = preferences.optString(key = "pin", default = "")
-                    if (pin.isEmpty()) {
+                    if (preferences.pin.isEmpty()) {
                         condition = lock.newCondition()
                         lock.withLock {
                             Log.d(tag, "wait:connection")
@@ -105,7 +104,7 @@ class Api {
                                     return@Thread
                                 }
                                 Log.d(tag, "signup:start")
-                                preferences.put(key = "session", value = session)
+                                preferences.session = session
                                 val response = Service.sendSync(
                                     Data(
                                         code = "SUA01",
@@ -119,7 +118,7 @@ class Api {
                                     if (r.isOk()) {
                                         val p = r.bodies["A00"] ?: ""
                                         Log.d(tag, "signup:put:pin:$p")
-                                        preferences.put(key = "pin", value = p)
+                                        preferences.pin = p
                                         Log.d(tag, "signup:retrieve")
                                         Service.sendAsync(
                                             Data(
@@ -132,7 +131,7 @@ class Api {
                             }
                         }
                     }
-                    Log.d(tag, "user pin: ${preferences.optString(key = "pin", default = "")}")
+                    Log.d(tag, "user pin: ${preferences.pin}")
                 } catch (e: Exception) {
                     Log.e(tag, e.message, e)
                 }
@@ -140,20 +139,19 @@ class Api {
         }
 
         internal fun sendToken(context: Context, token: String) {
-            if (context.pref().getBoolean("is_login", false)) {
-                context.pref().getString("pin", null)?.let {
-                    apiScope.launch {
-                        Service.sendAsync(
-                            Data(
-                                code = "ATO",
-                                status = System.nanoTime().toString(),
-                                f_pin = it,
-                                bodies = mutableMapOf(
-                                    "TKN" to token, "Bo" to Build.BRAND
-                                )
+            val pin = context.pref().pin
+            if (context.pref().isLogin && pin.isNotEmpty()) {
+                apiScope.launch {
+                    Service.sendAsync(
+                        Data(
+                            code = "ATO",
+                            status = System.nanoTime().toString(),
+                            f_pin = pin,
+                            bodies = mutableMapOf(
+                                "TKN" to token, "Bo" to Build.BRAND
                             )
                         )
-                    }
+                    )
                 }
             }
         }

+ 3 - 1
cpaas-lite/src/main/java/io/nexilis/service/FirebaseService.kt

@@ -8,6 +8,7 @@ import io.nexilis.service.core.Data
 import io.nexilis.service.core.IncomingInterface
 import io.nexilis.service.core.Network
 import io.nexilis.service.core.domain
+import io.nexilis.service.core.pin
 import io.nexilis.service.core.pref
 import org.json.JSONObject
 
@@ -26,7 +27,8 @@ class FirebaseService : FirebaseMessagingService() {
             val json = JSONObject(message.data.toMap())
             if (json.has("message_id")) {
                 json.optString("message_id").let { messageId ->
-                    applicationContext.pref().getString("pin", null)?.let { me ->
+                    val me = applicationContext.pref().pin
+                    if (me.isNotEmpty()) {
                         pullMessage(messageId, me)
                     }
                 }

+ 3 - 3
cpaas-lite/src/main/java/io/nexilis/service/Service.kt

@@ -127,15 +127,15 @@ class Service {
             return null
         }
 
-        fun sendAck(pin: String?, id: String) {
+        fun sendAck(pin: String, id: String) {
             try {
                 Log.d(tag, "Service:sendAck:$id")
-                pin?.let {
+                if (pin.isNotEmpty()) {
                     sendAsync(
                         Data(
                             code = "A02",
                             status = id,
-                            f_pin = it,
+                            f_pin = pin,
                             bodies = mutableMapOf("A18" to id)
                         )
                     )

+ 20 - 4
cpaas-lite/src/main/java/io/nexilis/service/core/Extension.kt

@@ -120,16 +120,32 @@ fun Context.pref(): SharedPreferences {
     )
 }
 
+var SharedPreferences.domain
+    get() = this.optString("domain", "")
+    set(value) = this.put("domain", value)
+
+var SharedPreferences.isLogin
+    get() = this.getBoolean("is_login", false)
+    set(value) = this.put("is_login", value)
+
+var SharedPreferences.pin
+    get() = this.optString("pin", "")
+    set(value) = this.put("pin", value)
+
+var SharedPreferences.api
+    get() = this.optString("api", "")
+    set(value) = this.put("api", value)
+
+var SharedPreferences.session
+    get() = this.optString("session", "")
+    set(value) = this.put("session", value)
+
 fun Context.getUnsafeImageLoader(): ImageLoader {
     return this.imageLoader.newBuilder().okHttpClient(
         getUnsafeOkHttpClient()
     ).build()
 }
 
-var SharedPreferences.domain
-    get() = this.optString("domain", "")
-    set(value) = this.put("domain", value)
-
 fun InputStream.toFile(context: Context, name: String? = null): File {
     val file = this.use { input ->
         var fileName = name

+ 6 - 6
cpaas-lite/src/main/java/io/nexilis/service/core/Incoming.kt

@@ -130,7 +130,7 @@ class Incoming @Inject constructor(
 
     private suspend fun pushMySelf(data: Data) {
         try {
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             buddyDao.deleteMe()
             buddyDao.insert(
                 Buddy(
@@ -213,7 +213,7 @@ class Incoming @Inject constructor(
 
     private suspend fun pushBuddies(data: Data) {
         try {
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             val d = data.bodies["A112"] ?: ""
             val jsonArray = JSONArray(d)
             Log.d(tag, "pushBuddies:$jsonArray")
@@ -301,7 +301,7 @@ class Incoming @Inject constructor(
 
     private suspend fun pushGroupBatch(data: Data) {
         try {
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             val d = data.bodies["A112"] ?: ""
             val jsonArray = JSONArray(d)
             for (i in 0 until jsonArray.length()) {
@@ -360,7 +360,7 @@ class Incoming @Inject constructor(
 
     private suspend fun pushMember(data: Data) {
         try {
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             groupMemberDao.insert(
                 GroupMember(
                     group_id = data.bodies["A04"] ?: "",
@@ -386,7 +386,7 @@ class Incoming @Inject constructor(
         try {
             val messageId = data.bodies["A18"] ?: ""
             if (messageId.isEmpty()) return
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             messageDao.getSync(messageId)?.let {
                 Service.sendAck(me, data.status)
                 return
@@ -541,7 +541,7 @@ class Incoming @Inject constructor(
 
     private suspend fun statusMessage(data: Data) {
         try {
-            val me = context.pref().getString("pin", null)
+            val me = context.pref().pin
             val messageIds = data.bodies["A18"] ?: ""
             if (messageIds.isEmpty()) return
             val status = data.bodies["A15"]?.toInt() ?: 0

+ 5 - 4
cpaas-lite/src/main/java/io/nexilis/service/data/repositories/BuddyRepository.kt

@@ -10,8 +10,9 @@ import io.nexilis.service.Service
 import io.nexilis.service.core.Data
 import io.nexilis.service.core.Network
 import io.nexilis.service.core.domain
+import io.nexilis.service.core.isLogin
+import io.nexilis.service.core.pin
 import io.nexilis.service.core.pref
-import io.nexilis.service.core.put
 import io.nexilis.service.core.toMD5
 import io.nexilis.service.data.daos.BuddyDao
 import io.nexilis.service.data.entities.Buddy
@@ -58,7 +59,7 @@ class BuddyRepository @Inject constructor(private val context: Context, private
             val pin = data.bodies["A00real"] ?: ""
             if (data.isOk() && pin.isNotEmpty()) {
                 dao.insert(Buddy(f_pin = pin, first_name = username, image_id = "", type = "1"))
-                context.pref().put(key = "pin", value = pin)
+                context.pref().pin = pin
             }
             withContext(Dispatchers.Main) {
                 completion(data.isOk(), pin)
@@ -95,8 +96,8 @@ class BuddyRepository @Inject constructor(private val context: Context, private
                 )
             }
             if (pin.isNotEmpty()) {
-                context.pref().put(key = "pin", value = pin)
-                context.pref().put(key = "is_login", value = true)
+                context.pref().pin = pin
+                context.pref().isLogin = true
             }
             FirebaseMessaging.getInstance().token.addOnCompleteListener(OnCompleteListener { task ->
                 if (!task.isSuccessful) {