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) <noreply@anthropic.com>
This commit is contained in:
2026-05-25 01:48:01 -04:00
parent 2e8124d496
commit d6301f5bdc
@@ -95,24 +95,42 @@ fun AdminUsersScreen(
} }
} }
resetPasswordFor?.let { user -> PendingDialogs(
ResetPasswordDialog( resetPasswordFor = resetPasswordFor,
user = user, deleteCandidate = deleteCandidate,
onDismiss = { resetPasswordFor = null }, onClearReset = { resetPasswordFor = null },
onConfirm = { newPassword -> onClearDelete = { deleteCandidate = null },
viewModel.resetPassword(user.id, newPassword) onConfirmReset = viewModel::resetPassword,
resetPasswordFor = null 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 = onClearReset,
onConfirm = { newPassword ->
onConfirmReset(user.id, newPassword)
onClearReset()
},
)
}
deleteCandidate?.let { user -> deleteCandidate?.let { user ->
DeleteConfirmDialog( DeleteConfirmDialog(
user = user, user = user,
onDismiss = { deleteCandidate = null }, onDismiss = onClearDelete,
onConfirm = { onConfirm = {
viewModel.delete(user.id) onConfirmDelete(user.id)
deleteCandidate = null onClearDelete()
}, },
) )
} }