From 8df0e239a74a319b015384da931c3c654726c9b0 Mon Sep 17 00:00:00 2001 From: thumb2086 Date: Sat, 31 Oct 2026 01:00:31 +0800 Subject: [PATCH] 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) --- .../composeResources/values/strings.xml | 2 ++ .../modules/settings/JamSettingsScreen.kt | 21 ++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/composeApp/src/commonMain/composeResources/values/strings.xml b/composeApp/src/commonMain/composeResources/values/strings.xml index 2fbae5e0..364d2231 100644 --- a/composeApp/src/commonMain/composeResources/values/strings.xml +++ b/composeApp/src/commonMain/composeResources/values/strings.xml @@ -319,6 +319,8 @@ Password (optional) Client ID prefix Used to identify this Spotube instance + Participant name + Your display name in jam rooms Encrypt the broker connection Check the current broker settings before starting a room. Test connection diff --git a/composeApp/src/commonMain/kotlin/org/spotube/spotube/modules/settings/JamSettingsScreen.kt b/composeApp/src/commonMain/kotlin/org/spotube/spotube/modules/settings/JamSettingsScreen.kt index 0643cb4b..ac107939 100644 --- a/composeApp/src/commonMain/kotlin/org/spotube/spotube/modules/settings/JamSettingsScreen.kt +++ b/composeApp/src/commonMain/kotlin/org/spotube/spotube/modules/settings/JamSettingsScreen.kt @@ -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_test_fail 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 fun JamSettingsScreen( @@ -197,6 +199,23 @@ internal fun JamSettingsContent( settingsSectionHeader(Res.string.settings_jam_section_identity) settingsSectionCard( 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( title = stringResource(Res.string.settings_jam_broker_client_id), @@ -260,4 +279,4 @@ internal fun JamSettingsContent( } } } -} +} \ No newline at end of file