From f8678af261f2ea3af67e306bdbbd910e6ad6cee5 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sun, 6 Nov 2022 16:30:10 +0300 Subject: [PATCH] android: Some small fixes (#1305) --- .../java/chat/simplex/app/MainActivity.kt | 1 + .../java/chat/simplex/app/model/ChatModel.kt | 8 ++++-- .../java/chat/simplex/app/model/SimpleXAPI.kt | 26 ++++++++++++++++--- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt b/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt index f9c274c6f..c7bf7635a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/MainActivity.kt @@ -65,6 +65,7 @@ class MainActivity: FragmentActivity() { // Only needed to be processed on first creation of activity if (savedInstanceState == null) { processNotificationIntent(intent, m) + processIntent(intent, m) processExternalIntent(intent, m) } setContent { diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt index 3eaf0daed..3e9741f0a 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/ChatModel.kt @@ -313,6 +313,10 @@ class ChatModel(val controller: ChatController) { if (memberIndex >= 0) { groupMembers[memberIndex] = member false + } else if (groupInfo.membership.groupMemberId == member.groupMemberId) { + // Current user was updated (like his role, for example) + updateChatInfo(ChatInfo.Group(groupInfo)) + true } else { groupMembers.add(member) true @@ -448,7 +452,7 @@ sealed class ChatInfo: SomeChat, NamedChat { } @Serializable @SerialName("group") - class Group(val groupInfo: GroupInfo): ChatInfo() { + data class Group(val groupInfo: GroupInfo): ChatInfo() { override val chatType get() = ChatType.Group override val localDisplayName get() = groupInfo.localDisplayName override val id get() = groupInfo.id @@ -700,7 +704,7 @@ class GroupProfile ( } @Serializable -class GroupMember ( +data class GroupMember ( val groupMemberId: Long, val groupId: Long, val memberId: String, diff --git a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt index 544385427..80a7b1b35 100644 --- a/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt +++ b/apps/android/app/src/main/java/chat/simplex/app/model/SimpleXAPI.kt @@ -1222,12 +1222,23 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a // service or periodic mode was chosen and battery optimization is disabled SimplexApp.context.schedulePeriodicServiceRestartWorker() SimplexApp.context.schedulePeriodicWakeUp() + chatModel.appOpenUrl.value?.let { + chatModel.appOpenUrl.value = null + connectIfOpenedViaUri(it, chatModel) + } } } private fun showBGServiceNotice(mode: NotificationsMode) = AlertManager.shared.showAlert { + val hideAlert: () -> Unit = { + AlertManager.shared.hideAlert() + chatModel.appOpenUrl.value?.let { + chatModel.appOpenUrl.value = null + connectIfOpenedViaUri(it, chatModel) + } + } AlertDialog( - onDismissRequest = AlertManager.shared::hideAlert, + onDismissRequest = hideAlert, title = { Row { Icon( @@ -1253,7 +1264,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a } }, confirmButton = { - TextButton(onClick = AlertManager.shared::hideAlert) { Text(stringResource(R.string.ok)) } + TextButton(onClick = hideAlert) { Text(stringResource(R.string.ok)) } } ) } @@ -1294,8 +1305,15 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a } private fun showDisablingServiceNotice(mode: NotificationsMode) = AlertManager.shared.showAlert { + val hideAlert: () -> Unit = { + AlertManager.shared.hideAlert() + chatModel.appOpenUrl.value?.let { + chatModel.appOpenUrl.value = null + connectIfOpenedViaUri(it, chatModel) + } + } AlertDialog( - onDismissRequest = AlertManager.shared::hideAlert, + onDismissRequest = hideAlert, title = { Row { Icon( @@ -1318,7 +1336,7 @@ open class ChatController(var ctrl: ChatCtrl?, val ntfManager: NtfManager, val a } }, confirmButton = { - TextButton(onClick = AlertManager.shared::hideAlert) { Text(stringResource(R.string.ok)) } + TextButton(onClick = hideAlert) { Text(stringResource(R.string.ok)) } } ) }