From 93c5fb481d8048b35edada924c7c34c54ec9b321 Mon Sep 17 00:00:00 2001 From: Honey Date: Thu, 18 Jun 2026 20:13:19 +0200 Subject: [PATCH] feat(android): add description field to playlist edit dialog Co-Authored-By: Claude Sonnet 4.6 --- .../app/ui/screen/PlaylistDetailScreen.kt | 20 +++++++++++++++++-- .../app/viewmodel/PlaylistViewModel.kt | 7 ++++--- 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/kotlin/com/novasonic/app/ui/screen/PlaylistDetailScreen.kt b/android/app/src/main/kotlin/com/novasonic/app/ui/screen/PlaylistDetailScreen.kt index 8a2bf8d..ca32b90 100644 --- a/android/app/src/main/kotlin/com/novasonic/app/ui/screen/PlaylistDetailScreen.kt +++ b/android/app/src/main/kotlin/com/novasonic/app/ui/screen/PlaylistDetailScreen.kt @@ -272,7 +272,8 @@ fun PlaylistDetailScreen( // ── Rename dialog ───────────────────────────────────────────────────────── if (showRenameDialog) { - var nameInput by remember { mutableStateOf(pl.name) } + var nameInput by remember { mutableStateOf(pl.name) } + var commentInput by remember { mutableStateOf(pl.comment ?: "") } AlertDialog( onDismissRequest = { showRenameDialog = false }, title = { Text("Playlist bearbeiten", fontFamily = Outfit, fontWeight = FontWeight.Bold) }, @@ -283,6 +284,21 @@ fun PlaylistDetailScreen( onValueChange = { nameInput = it }, label = { Text("Name") }, singleLine = true, + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Next), + shape = RoundedCornerShape(12.dp), + colors = OutlinedTextFieldDefaults.colors( + focusedBorderColor = NsAccent, + unfocusedBorderColor = NsOnSurface3, + cursorColor = NsAccent, + ), + modifier = Modifier.fillMaxWidth(), + ) + OutlinedTextField( + value = commentInput, + onValueChange = { commentInput = it }, + label = { Text("Beschreibung") }, + minLines = 2, + maxLines = 4, keyboardOptions = KeyboardOptions(imeAction = ImeAction.Done), shape = RoundedCornerShape(12.dp), colors = OutlinedTextFieldDefaults.colors( @@ -305,7 +321,7 @@ fun PlaylistDetailScreen( }, confirmButton = { TextButton( - onClick = { vm.rename(nameInput); showRenameDialog = false }, + onClick = { vm.rename(nameInput, commentInput); showRenameDialog = false }, enabled = nameInput.isNotBlank(), ) { Text("Speichern", color = NsAccent, fontFamily = Outfit, fontWeight = FontWeight.Bold) diff --git a/android/app/src/main/kotlin/com/novasonic/app/viewmodel/PlaylistViewModel.kt b/android/app/src/main/kotlin/com/novasonic/app/viewmodel/PlaylistViewModel.kt index 666745a..c4781b8 100644 --- a/android/app/src/main/kotlin/com/novasonic/app/viewmodel/PlaylistViewModel.kt +++ b/android/app/src/main/kotlin/com/novasonic/app/viewmodel/PlaylistViewModel.kt @@ -45,17 +45,18 @@ class PlaylistViewModel(app: Application, savedState: SavedStateHandle) : Androi } } - fun rename(newName: String) { + fun rename(newName: String, newComment: String? = null) { val id = playlistId ?: return val pl = _state.value.playlist ?: return val trimmed = newName.trim() if (trimmed.isBlank()) return + val comment = newComment?.trim() ?: pl.comment viewModelScope.launch { _state.value = _state.value.copy(isSaving = true) try { - repo.updatePlaylistMeta(id, trimmed, pl.comment) + repo.updatePlaylistMeta(id, trimmed, comment) _state.value = _state.value.copy( - playlist = pl.copy(name = trimmed), + playlist = pl.copy(name = trimmed, comment = comment), isSaving = false, ) } catch (e: Exception) {