import 'package:flutter/material.dart'; import 'package:collection/collection.dart'; import 'package:provider/provider.dart'; import 'package:pshared/controllers/balance_mask/wallets.dart'; import 'package:pshared/controllers/payment/source.dart'; import 'package:pshared/models/payment/source.dart'; import 'package:pshared/provider/ledger.dart'; import 'package:pweb/pages/wallet_top_up/content.dart'; import 'package:pweb/pages/wallet_top_up/ledger_content.dart'; import 'package:pweb/generated/i18n/app_localizations.dart'; class WalletTopUpPage extends StatelessWidget { final VoidCallback onBack; const WalletTopUpPage({super.key, required this.onBack}); @override Widget build(BuildContext context) { final loc = AppLocalizations.of(context)!; final source = context.watch().selectedSource; if (source == null) { return Center(child: Text(loc.noWalletSelected)); } return switch (source.type) { PaymentSourceType.wallet => Consumer( builder: (context, provider, child) { if (provider.isLoading) { return const Center(child: CircularProgressIndicator()); } if (provider.error != null) { return Center( child: Text(loc.notificationError(provider.error.toString())), ); } final wallet = provider.selectedWallet; if (wallet == null) { return Center(child: Text(loc.noWalletSelected)); } return WalletTopUpContent(wallet: wallet, onBack: onBack); }, ), PaymentSourceType.ledger => Consumer( builder: (context, provider, child) { if (provider.isLoading) { return const Center(child: CircularProgressIndicator()); } if (provider.error != null) { return Center( child: Text(loc.notificationError(provider.error.toString())), ); } final account = provider.accounts.firstWhereOrNull( (item) => item.ledgerAccountRef == source.id, ); if (account == null) { return Center(child: Text(loc.noWalletSelected)); } return LedgerTopUpContent(account: account, onBack: onBack); }, ), }; } }