WIP: integration with ledger
This commit is contained in:
@@ -1,10 +1,15 @@
|
||||
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';
|
||||
|
||||
@@ -17,27 +22,55 @@ class WalletTopUpPage extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final loc = AppLocalizations.of(context)!;
|
||||
final source = context.watch<PaymentSourceController>().selectedSource;
|
||||
|
||||
return Consumer<WalletsController>(builder: (context, provider, child) {
|
||||
if (provider.isLoading) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
if (source == null) {
|
||||
return Center(child: Text(loc.noWalletSelected));
|
||||
}
|
||||
|
||||
if (provider.error != null) {
|
||||
return Center(
|
||||
child: Text(loc.notificationError(provider.error.toString())),
|
||||
);
|
||||
}
|
||||
return switch (source.type) {
|
||||
PaymentSourceType.wallet => Consumer<WalletsController>(
|
||||
builder: (context, provider, child) {
|
||||
if (provider.isLoading) {
|
||||
return const Center(child: CircularProgressIndicator());
|
||||
}
|
||||
|
||||
final wallet = provider.selectedWallet;
|
||||
if (wallet == null) {
|
||||
return Center(child: Text(loc.noWalletSelected));
|
||||
}
|
||||
if (provider.error != null) {
|
||||
return Center(
|
||||
child: Text(loc.notificationError(provider.error.toString())),
|
||||
);
|
||||
}
|
||||
|
||||
return WalletTopUpContent(
|
||||
wallet: wallet,
|
||||
onBack: onBack,
|
||||
);
|
||||
});
|
||||
final wallet = provider.selectedWallet;
|
||||
if (wallet == null) {
|
||||
return Center(child: Text(loc.noWalletSelected));
|
||||
}
|
||||
|
||||
return WalletTopUpContent(wallet: wallet, onBack: onBack);
|
||||
},
|
||||
),
|
||||
PaymentSourceType.ledger => Consumer<LedgerAccountsProvider>(
|
||||
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);
|
||||
},
|
||||
),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user