Closing qr scanner/connect via link screens after successfull request (#1130)

This commit is contained in:
Stanislav Dmitrenko
2022-09-26 19:01:47 +03:00
committed by GitHub
parent aeebb89dc2
commit 4934045f4e
5 changed files with 18 additions and 9 deletions

View File

@@ -37,6 +37,10 @@ class ModalManager {
showCustomModal { close -> ModalView(close, content = content) }
}
fun showModalCloseable(content: @Composable (close: () -> Unit) -> Unit) {
showCustomModal { close -> ModalView(close, content = { content(close) }) }
}
fun showCustomModal(modal: @Composable (close: () -> Unit) -> Unit) {
Log.d(TAG, "ModalManager.showModal")
modalViews.add(modal)

View File

@@ -19,7 +19,7 @@ enum class ConnectViaLinkTab {
}
@Composable
fun ConnectViaLinkView(m: ChatModel) {
fun ConnectViaLinkView(m: ChatModel, close: () -> Unit) {
val selection = remember {
mutableStateOf(
runCatching { ConnectViaLinkTab.valueOf(m.controller.appPrefs.connectViaLinkTab.get()!!) }.getOrDefault(ConnectViaLinkTab.SCAN)
@@ -38,10 +38,10 @@ fun ConnectViaLinkView(m: ChatModel) {
Column(Modifier.weight(1f)) {
when (selection.value) {
ConnectViaLinkTab.SCAN -> {
ScanToConnectView(m)
ScanToConnectView(m, close)
}
ConnectViaLinkTab.PASTE -> {
PasteToConnectView(m)
PasteToConnectView(m, close)
}
}
}

View File

@@ -33,7 +33,7 @@ fun NewChatSheet(chatModel: ChatModel, newChatCtrl: ScaffoldController) {
},
connectViaLink = {
newChatCtrl.collapse()
ModalManager.shared.showModal { ConnectViaLinkView(chatModel) }
ModalManager.shared.showModalCloseable { close -> ConnectViaLinkView(chatModel, close) }
},
createGroup = {
newChatCtrl.collapse()

View File

@@ -24,7 +24,7 @@ import chat.simplex.app.ui.theme.SimpleXTheme
import chat.simplex.app.views.helpers.*
@Composable
fun PasteToConnectView(chatModel: ChatModel) {
fun PasteToConnectView(chatModel: ChatModel, close: () -> Unit) {
val connectionLink = remember { mutableStateOf("") }
val context = LocalContext.current
val clipboard = getSystemService(context, ClipboardManager::class.java)
@@ -38,7 +38,9 @@ fun PasteToConnectView(chatModel: ChatModel) {
try {
val uri = Uri.parse(connReqUri)
withUriAction(uri) { action ->
connectViaUri(chatModel, action, uri)
if (connectViaUri(chatModel, action, uri)) {
close()
}
}
} catch (e: RuntimeException) {
AlertManager.shared.showAlertMsg(

View File

@@ -20,7 +20,7 @@ import chat.simplex.app.views.helpers.*
import com.google.accompanist.permissions.rememberPermissionState
@Composable
fun ScanToConnectView(chatModel: ChatModel) {
fun ScanToConnectView(chatModel: ChatModel, close: () -> Unit) {
val cameraPermissionState = rememberPermissionState(permission = Manifest.permission.CAMERA)
LaunchedEffect(Unit) {
cameraPermissionState.launchPermissionRequest()
@@ -32,7 +32,9 @@ fun ScanToConnectView(chatModel: ChatModel) {
try {
val uri = Uri.parse(connReqUri)
withUriAction(uri) { action ->
connectViaUri(chatModel, action, uri)
if (connectViaUri(chatModel, action, uri)) {
close()
}
}
} catch (e: RuntimeException) {
AlertManager.shared.showAlertMsg(
@@ -57,7 +59,7 @@ fun withUriAction(uri: Uri, run: suspend (String) -> Unit) {
}
}
suspend fun connectViaUri(chatModel: ChatModel, action: String, uri: Uri) {
suspend fun connectViaUri(chatModel: ChatModel, action: String, uri: Uri): Boolean {
val r = chatModel.controller.apiConnect(uri.toString())
if (r) {
AlertManager.shared.showAlertMsg(
@@ -67,6 +69,7 @@ suspend fun connectViaUri(chatModel: ChatModel, action: String, uri: Uri) {
else generalGetString(R.string.you_will_be_connected_when_your_contacts_device_is_online)
)
}
return r
}
@Composable