yayan 1 rok pred
rodič
commit
985656e6fc

+ 1 - 1
app/src/main/java/io/nexilis/alpha/ui/main/Chat.kt

@@ -42,7 +42,7 @@ fun Chat(navController: NavHostController, pin: String, mainViewModel: MainViewM
     val list by messageModel.getOpposite(pin).observeAsState()
     LaunchedEffect(buddy) {
         buddy?.first_name?.let {
-            mainViewModel.setTitle(it)
+            mainViewModel.setTitle("$it ${buddy?.last_name ?: ""}".trim())
         }
     }
     val state = rememberLazyListState()

+ 1 - 1
app/src/main/java/io/nexilis/alpha/ui/main/Chats.kt

@@ -36,7 +36,7 @@ fun Chats(
     contentPadding: PaddingValues = PaddingValues(0.dp),
     mainViewModel: MainViewModel
 ) {
-    LaunchedEffect(Unit) {
+    SideEffect {
         mainViewModel.setTitle("Chats")
     }
     val messageSummaryViewModel: MessageSummaryViewModel = hiltViewModel()

+ 1 - 1
app/src/main/java/io/nexilis/alpha/ui/main/Contact.kt

@@ -28,7 +28,7 @@ import io.nexilis.service.data.viewmodels.BuddyViewModel
 @OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun Contact(navController: NavHostController, mainViewModel: MainViewModel) {
-    LaunchedEffect(Unit) {
+    SideEffect {
         mainViewModel.setTitle("Contact")
     }
     val viewModel: BuddyViewModel = hiltViewModel()

+ 2 - 1
app/src/main/java/io/nexilis/alpha/ui/main/Home.kt

@@ -6,6 +6,7 @@ import androidx.compose.foundation.lazy.grid.GridCells
 import androidx.compose.foundation.lazy.grid.LazyVerticalGrid
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.LaunchedEffect
+import androidx.compose.runtime.SideEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.livedata.observeAsState
 import androidx.compose.ui.Modifier
@@ -26,7 +27,7 @@ fun Home(
     contentPadding: PaddingValues = PaddingValues(0.dp),
     mainViewModel: MainViewModel
 ) {
-    LaunchedEffect(Unit) {
+    SideEffect {
         mainViewModel.setTitle("Home")
     }
     val viewModel: BuddyViewModel = hiltViewModel()

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

@@ -30,7 +30,7 @@ import io.nexilis.service.data.viewmodels.BuddyViewModel
 @OptIn(ExperimentalMaterial3Api::class)
 @Composable
 fun Profile(contentPadding: PaddingValues = PaddingValues(0.dp), mainViewModel: MainViewModel) {
-    LaunchedEffect(Unit) {
+    SideEffect {
         mainViewModel.setTitle("Profile")
     }
     var imageUri by remember { mutableStateOf<Bitmap?>(null) }

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

@@ -33,7 +33,7 @@ fun SignUp(
     mainViewModel: MainViewModel = hiltViewModel(),
     completion: (Boolean) -> Unit
 ) {
-    LaunchedEffect(Unit) {
+    SideEffect {
         mainViewModel.setTitle("Sign Up")
     }
     var textUsername by rememberSaveable(stateSaver = TextFieldValue.Saver) {

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

@@ -6,6 +6,8 @@ import io.newuniverse.SDK.nuSDKService
 import io.nexilis.service.Service
 import io.nexilis.service.apiScope
 import io.nexilis.service.data.entities.Buddy
+import io.nexilis.service.data.entities.Group
+import io.nexilis.service.data.entities.GroupMember
 import io.nexilis.service.data.entities.Message
 import io.nexilis.service.data.rooms.ApiRoomDatabase
 import io.nexilis.service.pass
@@ -53,6 +55,14 @@ class Incoming private constructor() {
                     pushBuddies(data)
                 }
 
+                "IBG" -> {
+                    pushGroupBatch(data)
+                }
+
+                "A009" -> {
+                    pushMember(data)
+                }
+
                 "S0" -> {
                     pushMessage(data)
                 }
@@ -108,6 +118,7 @@ class Incoming private constructor() {
 
     private suspend fun pushMySelf(data: Data) {
         try {
+            val me = context.getSharedPreferences().getString("pin", "")
             ApiRoomDatabase.getDatabase(context).buddyDao().insert(
                 Buddy(
                     data.bodies["A00"] ?: "",
@@ -181,6 +192,7 @@ class Incoming private constructor() {
                     data.bodies["ISL"] ?: ""
                 )
             )
+            Service.sendAck(me, data.status)
         } catch (e: Exception) {
             Log.e(tag, e.message, e)
         }
@@ -188,6 +200,7 @@ class Incoming private constructor() {
 
     private suspend fun pushBuddies(data: Data) {
         try {
+            val me = context.getSharedPreferences().getString("pin", "")
             val d = data.bodies["A112"] ?: ""
             val jsonArray = JSONArray(d)
             for (i in 0 until jsonArray.length()) {
@@ -266,6 +279,89 @@ class Incoming private constructor() {
                     )
                 )
             }
+            Service.sendAck(me, data.status)
+        } catch (e: Exception) {
+            Log.e(tag, e.message, e)
+        }
+    }
+
+    private suspend fun pushGroupBatch(data: Data) {
+        try {
+            val me = context.getSharedPreferences().getString("pin", "")
+            val d = data.bodies["A112"] ?: ""
+            val jsonArray = JSONArray(d)
+            for (i in 0 until jsonArray.length()) {
+                val jsonObject = jsonArray.getJSONObject(i)
+                ApiRoomDatabase.getDatabase(context).groupDao().insert(
+                    Group(
+                        jsonObject.optString("A04") ?: "",
+                        jsonObject.optString("A05") ?: "",
+                        jsonObject.optString("A06") ?: "",
+                        jsonObject.optString("A74") ?: "",
+                        jsonObject.optString("A16") ?: "",
+                        jsonObject.optString("A11") ?: "0",
+                        jsonObject.optString("A28") ?: "",
+                        jsonObject.optString("A29") ?: "0",
+                        jsonObject.optString("A43") ?: "",
+                        "",
+                        jsonObject.optInt("B0") ?: 0,
+                        jsonObject.optInt("A122") ?: 0,
+                        jsonObject.optString("BP") ?: "",
+                        jsonObject.optString("A103") ?: "",
+                        0,
+                        jsonObject.optInt("IOP") ?: 0,
+                        jsonObject.optInt("oacc") ?: 0,
+                        jsonObject.optInt("lvledu") ?: 0,
+                        jsonObject.optInt("mtredu") ?: 0,
+                        jsonObject.optInt("IED") ?: 0,
+                        jsonObject.optString("BZ1") ?: ""
+                    )
+                )
+                val members = jsonObject.getJSONArray("member")
+                for (j in 0 until members.length()) {
+                    val jsonMember = members.getJSONObject(j)
+                    ApiRoomDatabase.getDatabase(context).groupMemberDao().insert(
+                        GroupMember(
+                            jsonMember.optString("A04") ?: "",
+                            jsonMember.optString("A00") ?: "",
+                            jsonMember.optString("A80") ?: "",
+                            jsonMember.optString("B7") ?: "",
+                            jsonMember.optString("AC") ?: "",
+                            jsonMember.optString("AC_DESC") ?: "",
+                            jsonMember.optString("A02") ?: "",
+                            jsonMember.optString("A03") ?: "",
+                            jsonMember.optString("B5") ?: "",
+                            jsonMember.optString("A74") ?: "",
+                            jsonMember.optString("A29") ?: System.currentTimeMillis().toString(),
+                        )
+                    )
+                }
+            }
+            Service.sendAck(me, data.status)
+        } catch (e: Exception) {
+            Log.e(tag, e.message, e)
+        }
+    }
+
+    private suspend fun pushMember(data: Data) {
+        try {
+            val me = context.getSharedPreferences().getString("pin", "")
+            ApiRoomDatabase.getDatabase(context).groupMemberDao().insert(
+                GroupMember(
+                    data.bodies["A04"] ?: "",
+                    data.bodies["A00"] ?: "",
+                    data.bodies["A80"] ?: "",
+                    data.bodies["B7"] ?: "",
+                    data.bodies["AC"] ?: "",
+                    data.bodies["AC_DESC"] ?: "",
+                    data.bodies["A02"] ?: "",
+                    data.bodies["A03"] ?: "",
+                    data.bodies["B5"] ?: "",
+                    data.bodies["A74"] ?: "",
+                    data.bodies["A29"] ?: System.currentTimeMillis().toString(),
+                )
+            )
+            Service.sendAck(me, data.status)
         } catch (e: Exception) {
             Log.e(tag, e.message, e)
         }

+ 2 - 1
cpaas-lite/src/main/java/io/nexilis/service/data/entities/Group.kt

@@ -23,5 +23,6 @@ data class Group(
     val official: Int = 0,
     val level_edu: Int = -1,
     val materi_edu: Int = -1,
-    val is_education: Int = 0
+    val is_education: Int = 0,
+    val be: String
 ) : MainEntity