From d6301f5bdc10383384e3c64dd30be439809f1937 Mon Sep 17 00:00:00 2001 From: Bryan Van Deusen Date: Mon, 25 May 2026 01:48:01 -0400 Subject: [PATCH] fix(android): extract PendingDialogs from AdminUsersScreen (detekt LongMethod) AdminUsersScreen body was 65 lines vs the 60 cap because both dialogs were rendered inline. Pulled them into a single PendingDialogs helper that takes the two nullable selections + the clear/confirm callbacks. AdminUsersScreen is back to ~45 lines and PendingDialogs is ~30. File function count is still 8 (Screen + UserList + UserRow + ToggleRow + PendingDialogs + ResetPasswordDialog + DeleteConfirmDialog + LoadingCentered), under the 11 cap. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../minstrel/admin/ui/AdminUsersScreen.kt | 32 +++++++++++++++---- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminUsersScreen.kt b/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminUsersScreen.kt index dcef667d..9b42a9fa 100644 --- a/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminUsersScreen.kt +++ b/android/app/src/main/java/com/fabledsword/minstrel/admin/ui/AdminUsersScreen.kt @@ -95,24 +95,42 @@ fun AdminUsersScreen( } } + PendingDialogs( + resetPasswordFor = resetPasswordFor, + deleteCandidate = deleteCandidate, + onClearReset = { resetPasswordFor = null }, + onClearDelete = { deleteCandidate = null }, + onConfirmReset = viewModel::resetPassword, + onConfirmDelete = viewModel::delete, + ) +} + +@Composable +private fun PendingDialogs( + resetPasswordFor: AdminUserRef?, + deleteCandidate: AdminUserRef?, + onClearReset: () -> Unit, + onClearDelete: () -> Unit, + onConfirmReset: (String, String) -> Unit, + onConfirmDelete: (String) -> Unit, +) { resetPasswordFor?.let { user -> ResetPasswordDialog( user = user, - onDismiss = { resetPasswordFor = null }, + onDismiss = onClearReset, onConfirm = { newPassword -> - viewModel.resetPassword(user.id, newPassword) - resetPasswordFor = null + onConfirmReset(user.id, newPassword) + onClearReset() }, ) } - deleteCandidate?.let { user -> DeleteConfirmDialog( user = user, - onDismiss = { deleteCandidate = null }, + onDismiss = onClearDelete, onConfirm = { - viewModel.delete(user.id) - deleteCandidate = null + onConfirmDelete(user.id) + onClearDelete() }, ) }