feat(settings): add participant name input to Jam settings

- Add participant name text input in Group Jam > Identity section
- User can now set custom display name for Jam rooms instead of auto-generated 'Host-XXXX' / 'Guest-XXXX'
- Persists to UserSettings.jamParticipantName

Resolves: #3182 (participant name not editable)
This commit is contained in:
thumb2086 2026-10-31 01:00:31 +08:00
parent 35700920b4
commit 8df0e239a7
2 changed files with 22 additions and 1 deletions

View File

@ -319,6 +319,8 @@
<string name="settings_jam_broker_password">Password (optional)</string> <string name="settings_jam_broker_password">Password (optional)</string>
<string name="settings_jam_broker_client_id">Client ID prefix</string> <string name="settings_jam_broker_client_id">Client ID prefix</string>
<string name="settings_jam_broker_client_id_subtitle">Used to identify this Spotube instance</string> <string name="settings_jam_broker_client_id_subtitle">Used to identify this Spotube instance</string>
<string name="settings_jam_participant_name">Participant name</string>
<string name="settings_jam_participant_name_placeholder">Your display name in jam rooms</string>
<string name="settings_jam_broker_tls_subtitle">Encrypt the broker connection</string> <string name="settings_jam_broker_tls_subtitle">Encrypt the broker connection</string>
<string name="settings_jam_broker_diagnostics_subtitle">Check the current broker settings before starting a room.</string> <string name="settings_jam_broker_diagnostics_subtitle">Check the current broker settings before starting a room.</string>
<string name="settings_jam_broker_test">Test connection</string> <string name="settings_jam_broker_test">Test connection</string>

View File

@ -58,6 +58,8 @@ import spotube.composeapp.generated.resources.settings_jam_broker_content_descri
import spotube.composeapp.generated.resources.settings_jam_broker_username_placeholder import spotube.composeapp.generated.resources.settings_jam_broker_username_placeholder
import spotube.composeapp.generated.resources.settings_jam_broker_test_fail import spotube.composeapp.generated.resources.settings_jam_broker_test_fail
import spotube.composeapp.generated.resources.jam_error_connection_failed import spotube.composeapp.generated.resources.jam_error_connection_failed
import spotube.composeapp.generated.resources.settings_jam_participant_name
import spotube.composeapp.generated.resources.settings_jam_participant_name_placeholder
@Composable @Composable
fun JamSettingsScreen( fun JamSettingsScreen(
@ -197,6 +199,23 @@ internal fun JamSettingsContent(
settingsSectionHeader(Res.string.settings_jam_section_identity) settingsSectionHeader(Res.string.settings_jam_section_identity)
settingsSectionCard( settingsSectionCard(
items = listOf( items = listOf(
{
TextInputSettingCard(
title = stringResource(Res.string.settings_jam_participant_name),
value = uiState.settings.jamParticipantName,
placeholder = stringResource(Res.string.settings_jam_participant_name_placeholder),
onValueSaved = { name ->
viewModel.update {
copy(jamParticipantName = name)
}
},
icon = {
SettingsItemIcon(
Iconsax.User,
stringResource(Res.string.settings_jam_participant_name)
)
})
},
{ {
TextInputSettingCard( TextInputSettingCard(
title = stringResource(Res.string.settings_jam_broker_client_id), title = stringResource(Res.string.settings_jam_broker_client_id),
@ -260,4 +279,4 @@ internal fun JamSettingsContent(
} }
} }
} }
} }