소스 검색

first commit

yayan 1 년 전
부모
커밋
f1be10eb78

+ 5 - 0
app/src/main/java/io/nexilis/alpha/ui/main/Profile.kt

@@ -10,6 +10,7 @@ import androidx.compose.foundation.BorderStroke
 import androidx.compose.foundation.Image
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
+import androidx.compose.foundation.clickable
 import androidx.compose.foundation.layout.*
 import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.material.icons.Icons
@@ -143,6 +144,10 @@ fun Profile(contentPadding: PaddingValues = PaddingValues(0.dp), me: Buddy) {
             }
         )
         ListItem(
+            modifier = Modifier.clickable {
+                Toast.makeText(context, "isConnected: ${Api.isConnected()}", Toast.LENGTH_SHORT)
+                    .show()
+            },
             headlineContent = { Text("Version", style = MaterialTheme.typography.bodySmall) },
             supportingContent = {
                 Text(

+ 19 - 1
cpaas-lite/src/main/java/io/nexilis/service/Api.kt

@@ -5,7 +5,10 @@ import android.content.Context
 import android.content.Intent
 import android.os.Build
 import android.util.Log
+import dagger.hilt.android.EntryPointAccessors
 import io.newuniverse.SDK.nuSDKService
+import io.nexilis.service.core.ApiEntry
+import io.nexilis.service.core.DaggerIncomingComponent
 import io.nexilis.service.core.Data
 import io.nexilis.service.core.getSharedPreferences
 import io.nexilis.service.core.optString
@@ -26,6 +29,17 @@ class Api {
 
         fun connect(account: String, activity: Activity) {
             Log.d(tag, "connect:$account")
+            val sdkCallback = SdkCallback()
+            DaggerIncomingComponent.builder()
+                .context(activity)
+                .appDependencies(
+                    EntryPointAccessors.fromApplication(
+                        activity.applicationContext,
+                        ApiEntry.IncomingInterface::class.java
+                    )
+                )
+                .build()
+                .inject(sdkCallback)
             Thread {
                 try {
                     activity.startService(Intent(activity, nuSDKService::class.java))
@@ -44,7 +58,7 @@ class Api {
                         account,
                         activity,
                         SdkCallback::class.java,
-                        SdkCallback(),
+                        sdkCallback,
                         "202.158.33.26",
                         62823,
                         session,
@@ -121,5 +135,9 @@ class Api {
         fun version(): String {
             return nuSDKService.getInstance(pass).sGetVersion()
         }
+
+        fun isConnected(): Boolean {
+            return nuSDKService.getInstance(pass).nGetCLXConnState() == 1.toByte()
+        }
     }
 }

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

@@ -11,6 +11,8 @@ import org.json.JSONObject
 
 class FirebaseService : FirebaseMessagingService() {
 
+    private lateinit var incoming: Incoming
+
     override fun onNewToken(token: String) {
         super.onNewToken(token)
         Log.d(tag, "onNewToken:$token")
@@ -42,7 +44,7 @@ class FirebaseService : FirebaseMessagingService() {
                 if (data.isNotEmpty()) {
                     val d = Data()
                     if (d.parse(data)) {
-                        Incoming(applicationContext).process(d) {
+                        incoming.process(d) {
                             if (it) {
                                 Network().post(
                                     "https://202.158.33.27/ack_message",

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

@@ -10,9 +10,9 @@ import kotlin.concurrent.withLock
 
 class SdkCallback : nuSDKCallBack {
 
-    private val tag = "SdkCallback"
+    private lateinit var incoming: Incoming
 
-    private val context: Context by lazy { nuSDKService.getInstance(pass) as Context }
+    private val tag = "SdkCallback"
 
     override fun connectionStateChanged(
         p0: String?,
@@ -74,7 +74,7 @@ class SdkCallback : nuSDKCallBack {
                 p0?.let { s ->
                     data.packetId = s
                 }
-                Incoming(context).process(data)
+                incoming.process(data)
             }
         } catch (e: Exception) {
             Log.e(tag, e.message, e)

+ 20 - 0
cpaas-lite/src/main/java/io/nexilis/service/core/ApiComponent.kt

@@ -0,0 +1,20 @@
+package io.nexilis.service.core
+
+import android.content.Context
+import dagger.BindsInstance
+import dagger.Component
+import io.nexilis.service.SdkCallback
+
+@Component(dependencies = [ApiEntry.IncomingInterface::class])
+interface IncomingComponent {
+
+    fun inject(nuSdkCallback: SdkCallback)
+
+    @Component.Builder
+    interface Builder {
+        fun context(@BindsInstance context: Context): Builder
+        fun appDependencies(incomingInterface: ApiEntry.IncomingInterface): Builder
+        fun build(): IncomingComponent
+    }
+
+}

+ 16 - 0
cpaas-lite/src/main/java/io/nexilis/service/core/ApiEntry.kt

@@ -0,0 +1,16 @@
+package io.nexilis.service.core
+
+import dagger.hilt.EntryPoint
+import dagger.hilt.InstallIn
+import dagger.hilt.components.SingletonComponent
+
+class ApiEntry {
+
+    @EntryPoint
+    @InstallIn(SingletonComponent::class)
+    interface IncomingInterface {
+        fun getIncoming(): Incoming
+
+    }
+
+}

+ 4 - 0
cpaas-lite/src/main/java/io/nexilis/service/core/ApiModule.kt

@@ -112,4 +112,8 @@ object ApiModule {
         return database.workingAreaDao()
     }
 
+    @Provides
+    fun provideIncoming(context: Context): Incoming {
+        return Incoming(context);
+    }
 }

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

@@ -27,8 +27,9 @@ import io.nexilis.service.tag
 import kotlinx.coroutines.launch
 import org.json.JSONArray
 import java.util.zip.ZipInputStream
+import javax.inject.Inject
 
-class Incoming(private val context: Context) {
+class Incoming @Inject constructor(private val context: Context) {
 
     fun process(data: Data, completion: ((Boolean) -> Unit)? = null) {
         Log.d(tag, "process(${data.code}):$data")