Browse Source

feat(android): show NAT profile and external address for own sockets

stream-multiview
evgeny 1 week ago
parent
commit
86c08092af
  1. 21
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/LocalSocketNatInfo.kt
  2. 2
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/MemberListScreen.kt
  3. 2
      tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt

21
tools/chatgui-android/app/src/main/java/com/utun/chat/ui/components/LocalSocketNatInfo.kt

@ -0,0 +1,21 @@
package com.utun.chat.ui.components
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.res.stringResource
import com.utun.chat.R
import com.utun.chat.data.LocalSocketState
/** Результат детектора для рабочего сокета; порт TCP остаётся нулевым. */
@Composable
fun LocalSocketNatInfo(socket: LocalSocketState) {
val source = if (socket.natSource == 2) " · STUN" else ""
Text(stringResource(socket.natLabelRes) + source,
style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant)
if (socket.externalIp.isNotEmpty()) {
val ip = if (socket.externalIp.contains(':')) "[${socket.externalIp}]" else socket.externalIp
Text(stringResource(R.string.socket_external_address, "$ip:${socket.externalPort}"),
style = MaterialTheme.typography.bodySmall, color = MaterialTheme.colorScheme.onSurfaceVariant)
}
}

2
tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/MemberListScreen.kt

@ -47,6 +47,7 @@ import com.utun.chat.data.MemberDetail
import com.utun.chat.data.MemberLinks
import com.utun.chat.data.LinkStatus
import com.utun.chat.data.LocalSocketState
import com.utun.chat.ui.components.LocalSocketNatInfo
import com.utun.chat.ui.components.PortableRadioIcon
import com.utun.chat.ui.components.RadioSpeakerIcon
import com.utun.chat.viewmodel.ChatViewModel
@ -427,6 +428,7 @@ private fun MemberDetailCard(
color = MaterialTheme.colorScheme.onSurface
)
}
LocalSocketNatInfo(sk)
}
}
} else {

2
tools/chatgui-android/app/src/main/java/com/utun/chat/ui/screens/SettingsScreen.kt

@ -41,6 +41,7 @@ import com.utun.chat.data.MicrophonePermission
import com.utun.chat.data.LogManager
import com.utun.chat.data.ServerEntry
import com.utun.chat.data.LocalSocketState
import com.utun.chat.ui.components.LocalSocketNatInfo
import com.utun.chat.data.VoiceSettings
import com.utun.chat.headless.HeadlessService
import com.utun.chat.ui.components.BatteryOptimizationSetting
@ -380,6 +381,7 @@ private fun DeveloperSettingsTab(vm: ChatViewModel, onDirty: (Boolean) -> Unit,
}
Text(s.ifName, style = MaterialTheme.typography.bodySmall,
color = MaterialTheme.colorScheme.onSurfaceVariant, modifier = Modifier.fillMaxWidth())
LocalSocketNatInfo(s)
}
}
}

Loading…
Cancel
Save