MainComposable.kt (2950B)
1 /* 2 * This file is part of GNU Taler 3 * (C) 2025 Taler Systems S.A. 4 * 5 * GNU Taler is free software; you can redistribute it and/or modify it under the 6 * terms of the GNU General Public License as published by the Free Software 7 * Foundation; either version 3, or (at your option) any later version. 8 * 9 * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY 10 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR 11 * A PARTICULAR PURPOSE. See the GNU General Public License for more details. 12 * 13 * You should have received a copy of the GNU General Public License along with 14 * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> 15 */ 16 17 package net.taler.wallet.main 18 19 import androidx.compose.foundation.layout.PaddingValues 20 import androidx.compose.runtime.Composable 21 import androidx.compose.runtime.remember 22 import net.taler.wallet.balances.BalanceItem 23 import net.taler.wallet.balances.BalanceState 24 import net.taler.wallet.balances.BalancesComposable 25 import net.taler.wallet.transactions.Transaction 26 import net.taler.wallet.transactions.TransactionsComposable 27 import net.taler.wallet.transactions.TransactionsResult 28 29 @Composable 30 fun MainComposable( 31 innerPadding: PaddingValues, 32 state: BalanceState, 33 txResult: TransactionsResult, 34 viewMode: ViewMode, 35 devMode: Boolean, 36 networkStatus: Boolean, 37 onWithdrawMoneyClicked: () -> Unit, 38 onGetDemoMoneyClicked: () -> Unit, 39 onBalanceClicked: (balance: BalanceItem) -> Unit, 40 onPendingClicked: (balance: BalanceItem) -> Unit, 41 onStatementClicked: (host: String) -> Unit, 42 onTransactionClicked: (tx: Transaction) -> Unit, 43 onTransactionsDelete: (txIds: List<String>) -> Unit, 44 onShowBalancesClicked: () -> Unit, 45 ) { 46 when(viewMode) { 47 is ViewMode.Assets -> BalancesComposable( 48 innerPadding = innerPadding, 49 state = state, 50 devMode = devMode, 51 networkStatus = networkStatus, 52 onWithdrawMoneyClicked = onWithdrawMoneyClicked, 53 onGetDemoMoneyClicked = onGetDemoMoneyClicked, 54 onBalanceClicked = onBalanceClicked, 55 onPendingClicked = onPendingClicked, 56 onStatementClicked = onStatementClicked, 57 ) 58 59 is ViewMode.Transactions -> { 60 val balance = remember(state, viewMode) { 61 (state as? BalanceState.Success)?.balances?.find { 62 it.scopeInfo == viewMode.selectedScope 63 } 64 } 65 66 if (balance != null) TransactionsComposable( 67 innerPadding = innerPadding, 68 viewMode = viewMode, 69 balance = balance, 70 txResult = txResult, 71 onTransactionClick = onTransactionClicked, 72 onTransactionsDelete = onTransactionsDelete, 73 onShowBalancesClicked = onShowBalancesClicked, 74 ) 75 } 76 } 77 }