From 3b66e5b3c10a5db04df7ef463128680bf861bcde Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 20 Mar 2026 11:58:28 +0000 Subject: [PATCH] Replace Column+verticalScroll with LazyColumn for request cards With Column, all N request cards are composed simultaneously regardless of visibility. With LazyColumn, only visible cards (~5-10) are in the composition tree, so select/deselect all only recomposes visible items instead of every item in the list. https://claude.ai/code/session_01PRSKjmFms1Tj1QJ5FhfqZm --- .../ui/components/BunkerMultiEventHomeScreen.kt | 12 +++++------- .../ui/components/IntentMultiEventHomeScreen.kt | 12 +++++------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt index 3dce4f41..f5136f8c 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/BunkerMultiEventHomeScreen.kt @@ -9,8 +9,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -146,12 +146,10 @@ fun BunkerMultiEventHomeScreen( Text(stringResource(R.string.select_deselect_all)) } - Column( - Modifier - .weight(1f) - .verticalScroll(rememberScrollState()), + LazyColumn( + Modifier.weight(1f), ) { - bunkerRequests.forEach { bunkerRequest -> + items(bunkerRequests, key = { it.request.id }) { bunkerRequest -> BunkerRequestCard( context = context, bunkerRequest = bunkerRequest, diff --git a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt index d3a3bf50..2751b7b9 100644 --- a/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt +++ b/app/src/main/java/com/greenart7c3/nostrsigner/ui/components/IntentMultiEventHomeScreen.kt @@ -11,8 +11,8 @@ import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -154,12 +154,10 @@ fun IntentMultiEventHomeScreen( Text(stringResource(R.string.select_deselect_all)) } - Column( - Modifier - .weight(1f) - .verticalScroll(rememberScrollState()), + LazyColumn( + Modifier.weight(1f), ) { - intents.forEach { intent -> + items(intents, key = { it.id }) { intent -> IntentRequestCard( context = context, intent = intent,