WIP: integration with ledger
This commit is contained in:
@@ -5,6 +5,8 @@ import 'package:go_router/go_router.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/models/payment/type.dart';
|
||||
import 'package:pshared/models/recipient/recipient.dart';
|
||||
import 'package:pshared/provider/organizations.dart';
|
||||
@@ -26,6 +28,7 @@ import 'package:pweb/pages/dashboard/dashboard.dart';
|
||||
import 'package:pweb/pages/invitations/page.dart';
|
||||
import 'package:pweb/pages/payment_methods/page.dart';
|
||||
import 'package:pweb/pages/payout_page/page.dart';
|
||||
import 'package:pweb/pages/payout_page/wallet/edit/ledger_page.dart';
|
||||
import 'package:pweb/pages/payout_page/wallet/edit/page.dart';
|
||||
import 'package:pweb/pages/report/page.dart';
|
||||
import 'package:pweb/pages/settings/profile/page.dart';
|
||||
@@ -42,45 +45,80 @@ import 'package:pweb/generated/i18n/app_localizations.dart';
|
||||
RouteBase payoutShellRoute() => ShellRoute(
|
||||
builder: (context, state, child) => MultiProvider(
|
||||
providers: [
|
||||
ChangeNotifierProxyProvider2<OrganizationsProvider, RecipientsProvider, PaymentMethodsProvider>(
|
||||
ChangeNotifierProxyProvider2<
|
||||
OrganizationsProvider,
|
||||
RecipientsProvider,
|
||||
PaymentMethodsProvider
|
||||
>(
|
||||
create: (_) => PaymentMethodsProvider(),
|
||||
update: (context, organizations, recipients, provider) => provider!..updateProviders(organizations, recipients),
|
||||
update: (context, organizations, recipients, provider) =>
|
||||
provider!..updateProviders(organizations, recipients),
|
||||
),
|
||||
ChangeNotifierProxyProvider2<OrganizationsProvider, RecipientsProvider, RecipientMethodsCacheProvider>(
|
||||
ChangeNotifierProxyProvider2<
|
||||
OrganizationsProvider,
|
||||
RecipientsProvider,
|
||||
RecipientMethodsCacheProvider
|
||||
>(
|
||||
create: (_) => RecipientMethodsCacheProvider(),
|
||||
update: (context, organizations, recipients, provider) => provider!..updateProviders(organizations, recipients),
|
||||
update: (context, organizations, recipients, provider) =>
|
||||
provider!..updateProviders(organizations, recipients),
|
||||
),
|
||||
ChangeNotifierProxyProvider2<RecipientsProvider, PaymentMethodsProvider, PaymentFlowProvider>(
|
||||
create: (_) => PaymentFlowProvider(initialType: enabledPaymentTypes.first),
|
||||
update: (context, recipients, methods, provider) => provider!..update(
|
||||
ChangeNotifierProxyProvider2<
|
||||
RecipientsProvider,
|
||||
PaymentMethodsProvider,
|
||||
PaymentFlowProvider
|
||||
>(
|
||||
create: (_) =>
|
||||
PaymentFlowProvider(initialType: enabledPaymentTypes.first),
|
||||
update: (context, recipients, methods, provider) =>
|
||||
provider!..update(recipients, methods),
|
||||
),
|
||||
ChangeNotifierProvider(create: (_) => PaymentAmountProvider()),
|
||||
ChangeNotifierProxyProvider6<
|
||||
OrganizationsProvider,
|
||||
PaymentAmountProvider,
|
||||
PaymentSourceController,
|
||||
PaymentFlowProvider,
|
||||
RecipientsProvider,
|
||||
PaymentMethodsProvider,
|
||||
QuotationProvider
|
||||
>(
|
||||
create: (_) => QuotationProvider(),
|
||||
update:
|
||||
(
|
||||
_,
|
||||
organization,
|
||||
payment,
|
||||
sources,
|
||||
flow,
|
||||
recipients,
|
||||
methods,
|
||||
provider,
|
||||
) => provider!
|
||||
..update(
|
||||
organization,
|
||||
payment,
|
||||
sources,
|
||||
flow,
|
||||
recipients,
|
||||
methods,
|
||||
),
|
||||
),
|
||||
ChangeNotifierProvider(
|
||||
create: (_) => PaymentAmountProvider(),
|
||||
),
|
||||
ChangeNotifierProxyProvider6<OrganizationsProvider, PaymentAmountProvider, WalletsController, PaymentFlowProvider, RecipientsProvider, PaymentMethodsProvider, QuotationProvider>(
|
||||
create: (_) => QuotationProvider(),
|
||||
update: (_, organization, payment, wallet, flow, recipients, methods, provider) =>
|
||||
provider!..update(organization, payment, wallet, flow, recipients, methods),
|
||||
),
|
||||
ChangeNotifierProxyProvider<QuotationProvider, QuotationController>(
|
||||
create: (_) => QuotationController(),
|
||||
update: (_, quotation, controller) => controller!..update(quotation),
|
||||
),
|
||||
ChangeNotifierProxyProvider2<OrganizationsProvider, QuotationProvider, PaymentProvider>(
|
||||
ChangeNotifierProxyProvider2<
|
||||
OrganizationsProvider,
|
||||
QuotationProvider,
|
||||
PaymentProvider
|
||||
>(
|
||||
create: (_) => PaymentProvider(),
|
||||
update: (context, organization, quotation, provider) => provider!..update(
|
||||
organization,
|
||||
quotation,
|
||||
),
|
||||
update: (context, organization, quotation, provider) =>
|
||||
provider!..update(organization, quotation),
|
||||
),
|
||||
],
|
||||
child: PageSelector(
|
||||
child: child,
|
||||
routerState: state,
|
||||
),
|
||||
child: PageSelector(child: child, routerState: state),
|
||||
),
|
||||
routes: [
|
||||
GoRoute(
|
||||
@@ -206,6 +244,11 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
wallet,
|
||||
returnTo: PayoutDestination.methods,
|
||||
),
|
||||
onLedgerTap: (ledgerAccountRef) => _openLedgerEdit(
|
||||
context,
|
||||
ledgerAccountRef,
|
||||
returnTo: PayoutDestination.methods,
|
||||
),
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -213,8 +256,7 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
name: PayoutRoutes.editWallet,
|
||||
path: PayoutRoutes.editWalletPath,
|
||||
pageBuilder: (context, state) {
|
||||
final walletsProvider = context.read<WalletsController>();
|
||||
final wallet = walletsProvider.selectedWallet;
|
||||
final source = context.read<PaymentSourceController>().selectedSource;
|
||||
final loc = AppLocalizations.of(context)!;
|
||||
final fallbackDestination = PayoutRoutes.fallbackFromState(
|
||||
state,
|
||||
@@ -222,11 +264,15 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
);
|
||||
|
||||
return NoTransitionPage(
|
||||
child: wallet != null
|
||||
? WalletEditPage(
|
||||
child: switch (source?.type) {
|
||||
PaymentSourceType.wallet => WalletEditPage(
|
||||
onBack: () => _popOrGo(context, fallbackDestination),
|
||||
)
|
||||
: Center(child: Text(loc.noWalletSelected)),
|
||||
),
|
||||
PaymentSourceType.ledger => LedgerEditPage(
|
||||
onBack: () => _popOrGo(context, fallbackDestination),
|
||||
),
|
||||
null => Center(child: Text(loc.noWalletSelected)),
|
||||
},
|
||||
);
|
||||
},
|
||||
),
|
||||
@@ -256,16 +302,10 @@ void _startPayment(
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
context.read<RecipientsProvider>().setCurrentObject(recipient?.id);
|
||||
context.pushToPayment(
|
||||
paymentType: paymentType,
|
||||
returnTo: returnTo,
|
||||
);
|
||||
context.pushToPayment(paymentType: paymentType, returnTo: returnTo);
|
||||
}
|
||||
|
||||
void _openAddRecipient(
|
||||
BuildContext context, {
|
||||
Recipient? recipient,
|
||||
}) {
|
||||
void _openAddRecipient(BuildContext context, {Recipient? recipient}) {
|
||||
context.read<RecipientsProvider>().setCurrentObject(recipient?.id);
|
||||
context.pushNamed(PayoutRoutes.addRecipient);
|
||||
}
|
||||
@@ -276,6 +316,16 @@ void _openWalletEdit(
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
context.read<WalletsController>().selectWallet(wallet);
|
||||
context.read<PaymentSourceController>().selectWalletByRef(wallet.id);
|
||||
context.pushToEditWallet(returnTo: returnTo);
|
||||
}
|
||||
|
||||
void _openLedgerEdit(
|
||||
BuildContext context,
|
||||
String ledgerAccountRef, {
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
context.read<PaymentSourceController>().selectLedgerByRef(ledgerAccountRef);
|
||||
context.pushToEditWallet(returnTo: returnTo);
|
||||
}
|
||||
|
||||
@@ -285,6 +335,7 @@ void _openWalletTopUp(
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
context.read<WalletsController>().selectWallet(wallet);
|
||||
context.read<PaymentSourceController>().selectWalletByRef(wallet.id);
|
||||
context.pushToWalletTopUp(returnTo: returnTo);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user