Select any joined channel when opening an Android server link
This commit is contained in:
1 parent
f2d6561509
commit
3daacc07b7
3 files changed
+35
-2
No files matched your search
@@ -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))
|
||||
}
|
||||
},
|
||||
|
||||
@@ -600,4 +600,7 @@
|
||||
<string name="media_audio_failed">Не удалось использовать выбранное аудиоустройство. Проверьте текущие микрофон и выход.</string>
|
||||
<string name="settings_update_failed">Не удалось обновить настройки. Повторите попытку.</string>
|
||||
<string name="database_reset_failed">Не удалось завершить очистку базы. Повторите попытку.</string>
|
||||
<string name="server_add_channel">Добавить сервер в канал</string>
|
||||
<string name="server_add_no_channels">Создайте канал перед добавлением сервера.</string>
|
||||
<string name="server_add_bad_key">Ключ доступа к серверу неверен или был изменён.</string>
|
||||
</resources>
|
||||
@@ -599,4 +599,7 @@
|
||||
<string name="media_audio_failed">Could not use the selected audio device. Check the current microphone and output.</string>
|
||||
<string name="settings_update_failed">Could not update the settings. Try again.</string>
|
||||
<string name="database_reset_failed">Could not finish clearing the database. Try again.</string>
|
||||
<string name="server_add_channel">Add server to channel</string>
|
||||
<string name="server_add_no_channels">Create a channel before adding a server.</string>
|
||||
<string name="server_add_bad_key">The server access key is invalid or has changed.</string>
|
||||
</resources>
|
||||
Reference in new issue
Block a user