fix: payment detail not loading on filter or search when not in memory

This commit is contained in:
2026-06-03 22:36:27 +02:00
parent 432cd0e478
commit cb9961608c
6 changed files with 21 additions and 37 deletions
@@ -72,7 +72,7 @@ sealed class TabItem(val route: String, val label: String, val icon: ImageVector
private const val ROUTE_HOME = "home"
private const val ROUTE_SCANNER = "scanner"
private const val ROUTE_HISTORY = "history"
private const val ROUTE_PAYMENT_DETAIL = "payment_detail/{paymentHash}"
private const val ROUTE_PAYMENT_DETAIL = "payment_detail/{checkingId}"
@Composable
fun WalletScreen(
@@ -317,7 +317,7 @@ fun WalletScreen(
navController.popBackStack(ROUTE_HOME, inclusive = false)
},
onPaymentClick = { payment ->
navController.navigate("payment_detail/${payment.paymentHash}")
navController.navigate("payment_detail/${payment.checkingId}")
}
)
}
@@ -325,13 +325,12 @@ fun WalletScreen(
// Payment detail — back → history (natural back stack)
composable(
route = ROUTE_PAYMENT_DETAIL,
arguments = listOf(navArgument("paymentHash") { type = NavType.StringType })
arguments = listOf(navArgument("checkingId") { type = NavType.StringType })
) { backStackEntry ->
val paymentHash = backStackEntry.arguments?.getString("paymentHash") ?: ""
val historyState by historyVm.state.collectAsState()
val payment = (historyState as? HistoryState.Success)
?.payments
?.firstOrNull { it.paymentHash == paymentHash }
val checkingId = backStackEntry.arguments?.getString("checkingId") ?: ""
// val historyState by historyVm.state.collectAsState()
val historyState by historyVm.filteredState.collectAsState()
val payment = historyVm.findPayment(checkingId)
if (payment != null) {
PaymentDetailScreen(
@@ -340,7 +339,7 @@ fun WalletScreen(
onBack = { navController.popBackStack() }
)
} else {
LaunchedEffect(paymentHash) { historyVm.refresh() }
LaunchedEffect(checkingId) { historyVm.refresh() }
Box(
modifier = Modifier.fillMaxSize(),
contentAlignment = Alignment.Center