From 2cb9f062c54c7e5be238c1efa70973705cdb82bf Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Wed, 27 May 2026 17:36:58 -0400 Subject: [PATCH] fix(android) detekt: rename ListenBrainz wire file + shrink ListenBrainzForm MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * MatchingDeclarationName: ListenBrainzWire.kt → ListenBrainzStatusWire.kt. * LongMethod: extracted TokenField / SaveTokenButton / EnabledRow helpers so ListenBrainzForm stays under the 60-line cap. Co-Authored-By: Claude Opus 4.7 (1M context) --- ...rainzWire.kt => ListenBrainzStatusWire.kt} | 0 .../minstrel/settings/ui/ListenBrainzCard.kt | 57 +++++++++++++------ 2 files changed, 40 insertions(+), 17 deletions(-) rename android/app/src/main/java/com/fabledsword/minstrel/models/wire/{ListenBrainzWire.kt => ListenBrainzStatusWire.kt} (100%) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/models/wire/ListenBrainzWire.kt b/android/app/src/main/java/com/fabledsword/minstrel/models/wire/ListenBrainzStatusWire.kt similarity index 100% rename from android/app/src/main/java/com/fabledsword/minstrel/models/wire/ListenBrainzWire.kt rename to android/app/src/main/java/com/fabledsword/minstrel/models/wire/ListenBrainzStatusWire.kt diff --git a/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/ListenBrainzCard.kt b/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/ListenBrainzCard.kt index a5700ac8..89718579 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/ListenBrainzCard.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/settings/ui/ListenBrainzCard.kt @@ -77,23 +77,45 @@ private fun ListenBrainzForm( onSaveToken: () -> Unit, onSetEnabled: (Boolean) -> Unit, ) { + TokenField( + tokenInput = tokenInput, + tokenSet = status?.tokenSet == true, + onChange = onTokenChange, + ) + Spacer(Modifier.height(4.dp)) + SaveTokenButton( + isSaving = isSaving, + enabled = !isSaving && tokenInput.isNotBlank(), + onClick = onSaveToken, + ) + EnabledRow(status = status, isSaving = isSaving, onSetEnabled = onSetEnabled) + if (message != null) { + Text( + text = message, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + ) + } +} + +@Composable +private fun TokenField(tokenInput: String, tokenSet: Boolean, onChange: (String) -> Unit) { OutlinedTextField( value = tokenInput, - onValueChange = onTokenChange, - label = { - Text(if (status?.tokenSet == true) "Replace token" else "Token") - }, - placeholder = { - Text(if (status?.tokenSet == true) "Token saved" else "") - }, + onValueChange = onChange, + label = { Text(if (tokenSet) "Replace token" else "Token") }, + placeholder = { Text(if (tokenSet) "Token saved" else "") }, modifier = Modifier.fillMaxWidth(), singleLine = true, visualTransformation = PasswordVisualTransformation(), ) - Spacer(Modifier.height(4.dp)) +} + +@Composable +private fun SaveTokenButton(isSaving: Boolean, enabled: Boolean, onClick: () -> Unit) { Button( - onClick = onSaveToken, - enabled = !isSaving && tokenInput.isNotBlank(), + onClick = onClick, + enabled = enabled, modifier = Modifier.fillMaxWidth(), ) { if (isSaving) { @@ -106,6 +128,14 @@ private fun ListenBrainzForm( } Text(if (isSaving) "Saving…" else "Save token") } +} + +@Composable +private fun EnabledRow( + status: ListenBrainzStatus?, + isSaving: Boolean, + onSetEnabled: (Boolean) -> Unit, +) { Row( modifier = Modifier.fillMaxWidth(), verticalAlignment = Alignment.CenterVertically, @@ -131,11 +161,4 @@ private fun ListenBrainzForm( enabled = !isSaving && status?.tokenSet == true, ) } - if (message != null) { - Text( - text = message, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - ) - } }