taler-android

Android apps for GNU Taler (wallet, PoS, cashier)
Log | Files | Refs | README | LICENSE

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 }