From 4c1a132043a1bf2c0ce5de230dbcd1ce63d6ed5f Mon Sep 17 00:00:00 2001 From: Prslc Date: Tue, 4 Aug 2026 19:38:09 +0800 Subject: [PATCH] manager: fix update dialog being re-opened on every recomposition The trailing lambda in UpdateCard bound to WarningCard's `icon` parameter instead of `onClick` since the component rewrite in 61e261d appended the icon slot after onClose. The click handler was therefore executed as a side effect during composition: every recomposition called showConfirm() and re-opened the changelog dialog, so canceling it only triggered another recomposition and the dialog could never stay closed. Pass the handler explicitly as `onClick`. --- .../java/me/bmax/apatch/ui/screen/Home.kt | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/me/bmax/apatch/ui/screen/Home.kt b/app/src/main/java/me/bmax/apatch/ui/screen/Home.kt index b504833fd..c0213b2e6 100644 --- a/app/src/main/java/me/bmax/apatch/ui/screen/Home.kt +++ b/app/src/main/java/me/bmax/apatch/ui/screen/Home.kt @@ -736,16 +736,17 @@ fun UpdateCard() { val updateDialog = rememberConfirmDialog(onConfirm = { uriHandler.openUri(newVersionUrl) }) WarningCard( message = stringResource(id = R.string.home_new_apatch_found).format(newVersionCode), - MaterialTheme.colorScheme.outlineVariant - ) { - if (changelog.isEmpty()) { - uriHandler.openUri(newVersionUrl) - } else { - updateDialog.showConfirm( - title = title, content = changelog, markdown = true, confirm = updateText - ) + color = MaterialTheme.colorScheme.outlineVariant, + onClick = { + if (changelog.isEmpty()) { + uriHandler.openUri(newVersionUrl) + } else { + updateDialog.showConfirm( + title = title, content = changelog, markdown = true, confirm = updateText + ) + } } - } + ) } }