From 3daacc07b79e9c293df3be255ea58fa413f9de1c Mon Sep 17 00:00:00 2001 From: evgeny Date: Wed, 28 Oct 2026 11:06:24 +0100 Subject: [PATCH] Select any joined channel when opening an Android server link --- .../main/java/com/utun/chat/MainActivity.kt | 31 +++++++++++++++++-- .../app/src/main/res/values-ru/strings.xml | 3 ++ .../app/src/main/res/values/strings.xml | 3 ++ 3 files changed, 35 insertions(+), 2 deletions(-) diff --git a/tools/chatgui-android/app/src/main/java/com/utun/chat/MainActivity.kt b/tools/chatgui-android/app/src/main/java/com/utun/chat/MainActivity.kt index 94b1f78f..8c3749f4 100644 --- a/tools/chatgui-android/app/src/main/java/com/utun/chat/MainActivity.kt +++ b/tools/chatgui-android/app/src/main/java/com/utun/chat/MainActivity.kt @@ -42,6 +42,8 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.compose.material3.SnackbarHostState @@ -271,6 +273,8 @@ class MainActivity : AppCompatActivity() { } val pmInvite by vm.pmInvite.collectAsState() val linkJoin by vm.linkJoin.collectAsState() + val serverLink by vm.serverLink.collectAsState() + val serverChannels by vm.channels.collectAsState() val joinedChannel by vm.joinedChannel.collectAsState() LaunchedEffect(joinedChannel) { joinedChannel?.let { channel -> @@ -598,6 +602,26 @@ class MainActivity : AppCompatActivity() { } } ) } + serverLink?.let { link -> + val channels = serverChannels.filter { NativeLib.isChannelMember(it.id, NativeLib.getMyNodeId()) } + AlertDialog( + onDismissRequest = vm::dismissServerLink, + title = { Text(stringResource(R.string.server_add_channel)) }, + text = { + if (channels.isEmpty()) Text(stringResource(R.string.server_add_no_channels)) + else LazyColumn(Modifier.heightIn(max = 320.dp)) { + items(channels.size) { index -> + val channel = channels[index] + TextButton(onClick = { vm.openInviteLink(link, channel.id.toLong()) }) { + Text(channel.name + " (" + channel.id + ")") + } + } + } + }, + confirmButton = {}, + dismissButton = { TextButton(onClick = vm::dismissServerLink) { Text(stringResource(R.string.cancel)) } } + ) + } linkJoin?.let { state -> AlertDialog( onDismissRequest = vm::dismissLinkJoin, @@ -609,14 +633,17 @@ class MainActivity : AppCompatActivity() { LinearProgressIndicator(Modifier.fillMaxWidth()) Text(stringResource(R.string.connecting_peer)) } else { - Text(if (state.channelId == 0L) stringResource(R.string.invalid_invite_link) + Text(if (state.result == -10) stringResource(R.string.server_add_bad_key) + else if (state.channelId == 0L) stringResource(R.string.invalid_invite_link) else stringResource(R.string.invite_join_failed, state.result ?: -1), color = MaterialTheme.colorScheme.error) } } }, confirmButton = { - if (!state.pending && state.channelId != 0L) TextButton(onClick = { vm.openInviteLink(state.link) }) { + if (!state.pending && state.channelId != 0L) TextButton(onClick = { + vm.openInviteLink(state.link, if (state.serverAddition) state.channelId else 0) + }) { Text(stringResource(R.string.retry)) } }, diff --git a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml index 9aadb56f..e2a3b0cc 100644 --- a/tools/chatgui-android/app/src/main/res/values-ru/strings.xml +++ b/tools/chatgui-android/app/src/main/res/values-ru/strings.xml @@ -600,4 +600,7 @@ Не удалось использовать выбранное аудиоустройство. Проверьте текущие микрофон и выход. Не удалось обновить настройки. Повторите попытку. Не удалось завершить очистку базы. Повторите попытку. + Добавить сервер в канал + Создайте канал перед добавлением сервера. + Ключ доступа к серверу неверен или был изменён. diff --git a/tools/chatgui-android/app/src/main/res/values/strings.xml b/tools/chatgui-android/app/src/main/res/values/strings.xml index e1e53d17..61953305 100644 --- a/tools/chatgui-android/app/src/main/res/values/strings.xml +++ b/tools/chatgui-android/app/src/main/res/values/strings.xml @@ -599,4 +599,7 @@ Could not use the selected audio device. Check the current microphone and output. Could not update the settings. Try again. Could not finish clearing the database. Try again. + Add server to channel + Create a channel before adding a server. + The server access key is invalid or has changed.