redesigned payment page + a lot of fixes
This commit is contained in:
@@ -15,6 +15,7 @@ import 'package:pshared/provider/payment/multiple/quotation.dart';
|
||||
import 'package:pshared/provider/payment/payments.dart';
|
||||
import 'package:pshared/provider/payment/provider.dart';
|
||||
import 'package:pshared/provider/payment/quotation/quotation.dart';
|
||||
import 'package:pshared/provider/payment/updates.dart';
|
||||
import 'package:pshared/provider/payout_verification.dart';
|
||||
import 'package:pshared/provider/recipient/provider.dart';
|
||||
import 'package:pshared/provider/recipient/methods_cache.dart';
|
||||
@@ -22,18 +23,18 @@ import 'package:pshared/provider/recipient/pmethods.dart';
|
||||
|
||||
import 'package:pweb/app/router/pages.dart';
|
||||
import 'package:pweb/app/router/payout_routes.dart';
|
||||
import 'package:pweb/controllers/multiple_payouts.dart';
|
||||
import 'package:pweb/controllers/payment_page.dart';
|
||||
import 'package:pweb/controllers/payout_verification.dart';
|
||||
import 'package:pweb/controllers/payouts/multiple_payouts.dart';
|
||||
import 'package:pweb/controllers/payouts/multi_quotation.dart';
|
||||
import 'package:pweb/controllers/payments/page.dart';
|
||||
import 'package:pweb/controllers/payouts/payout_verification.dart';
|
||||
import 'package:pweb/pages/invitations/page/page.dart';
|
||||
import 'package:pweb/providers/multiple_payouts.dart';
|
||||
import 'package:pweb/controllers/multi_quotation.dart';
|
||||
import 'package:pweb/providers/quotation/quotation.dart';
|
||||
import 'package:pweb/controllers/payouts/quotation.dart';
|
||||
import 'package:pshared/models/payment/wallet.dart';
|
||||
import 'package:pweb/pages/address_book/form/page.dart';
|
||||
import 'package:pweb/pages/address_book/page/page.dart';
|
||||
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/send/page.dart';
|
||||
import 'package:pweb/pages/payout_page/wallet/edit/page.dart';
|
||||
import 'package:pweb/pages/report/details/page.dart';
|
||||
import 'package:pweb/pages/report/page.dart';
|
||||
@@ -169,14 +170,28 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
provider!..update(organization, quotation),
|
||||
),
|
||||
ChangeNotifierProxyProvider3<
|
||||
PaymentsProvider,
|
||||
PaymentProvider,
|
||||
MultiPaymentProvider,
|
||||
PaymentsUpdatesProvider
|
||||
>(
|
||||
create: (_) => PaymentsUpdatesProvider(),
|
||||
lazy: false,
|
||||
update: (_, payments, payment, multiPayment, controller) =>
|
||||
controller!..update(
|
||||
paymentsProvider: payments,
|
||||
paymentProvider: payment,
|
||||
multiPaymentProvider: multiPayment,
|
||||
),
|
||||
),
|
||||
ChangeNotifierProxyProvider2<
|
||||
MultiQuotationProvider,
|
||||
MultiPaymentProvider,
|
||||
PaymentsProvider,
|
||||
MultiplePayoutsProvider
|
||||
>(
|
||||
create: (_) => MultiplePayoutsProvider(),
|
||||
update: (context, quotation, payment, payments, provider) =>
|
||||
provider!..update(quotation, payment, payments),
|
||||
update: (context, quotation, payment, provider) =>
|
||||
provider!..update(quotation, payment),
|
||||
),
|
||||
ChangeNotifierProxyProvider2<
|
||||
MultiplePayoutsProvider,
|
||||
@@ -200,23 +215,19 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
onRecipientSelected: (recipient) => _startPayment(
|
||||
context,
|
||||
recipient: recipient,
|
||||
returnTo: PayoutDestination.dashboard,
|
||||
),
|
||||
onGoToPaymentWithoutRecipient: (type) => _startPayment(
|
||||
context,
|
||||
recipient: null,
|
||||
paymentType: type,
|
||||
returnTo: PayoutDestination.dashboard,
|
||||
),
|
||||
onTopUp: (wallet) => _openWalletTopUp(
|
||||
context,
|
||||
wallet,
|
||||
returnTo: PayoutDestination.dashboard,
|
||||
),
|
||||
onWalletTap: (wallet) => _openWalletEdit(
|
||||
context,
|
||||
wallet,
|
||||
returnTo: PayoutDestination.dashboard,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -231,11 +242,10 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
onRecipientSelected: (recipient) => _startPayment(
|
||||
context,
|
||||
recipient: recipient,
|
||||
returnTo: PayoutDestination.recipients,
|
||||
),
|
||||
onAddRecipient: () => _openAddRecipient(context),
|
||||
onEditRecipient: (recipient) =>
|
||||
_openAddRecipient(context, recipient: recipient),
|
||||
_openEditRecipient(context, recipient: recipient),
|
||||
onDeleteRecipient: (recipient) async {
|
||||
final confirmed = await showConfirmationDialog(
|
||||
context: context,
|
||||
@@ -269,7 +279,20 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
return NoTransitionPage(
|
||||
child: AddressBookRecipientForm(
|
||||
recipient: recipient,
|
||||
onSaved: (_) => context.goToPayout(PayoutDestination.recipients),
|
||||
onSaved: (_) => _popOrGo(context),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
GoRoute(
|
||||
name: PayoutRoutes.editRecipient,
|
||||
path: PayoutRoutes.editRecipientPath,
|
||||
pageBuilder: (context, _) {
|
||||
final recipient = context.read<RecipientsProvider>().currentObject;
|
||||
return NoTransitionPage(
|
||||
child: AddressBookRecipientForm(
|
||||
recipient: recipient,
|
||||
onSaved: (_) => _popOrGo(context),
|
||||
),
|
||||
);
|
||||
},
|
||||
@@ -278,14 +301,11 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
name: PayoutRoutes.payment,
|
||||
path: PayoutRoutes.paymentPath,
|
||||
pageBuilder: (context, state) {
|
||||
final fallbackDestination = PayoutRoutes.fallbackFromState(
|
||||
state,
|
||||
defaultDestination: PayoutDestination.dashboard,
|
||||
);
|
||||
final fallbackDestination = PayoutDestination.dashboard;
|
||||
|
||||
return NoTransitionPage(
|
||||
child: PaymentPage(
|
||||
onBack: (_) => _popOrGo(context, fallbackDestination),
|
||||
onBack: (_) => _popOrGo(context),
|
||||
initialPaymentType: PayoutRoutes.paymentTypeFromState(state),
|
||||
fallbackDestination: fallbackDestination,
|
||||
),
|
||||
@@ -327,15 +347,11 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
final walletsProvider = context.read<WalletsController>();
|
||||
final wallet = walletsProvider.selectedWallet;
|
||||
final loc = AppLocalizations.of(context)!;
|
||||
final fallbackDestination = PayoutRoutes.fallbackFromState(
|
||||
state,
|
||||
defaultDestination: PayoutDestination.methods,
|
||||
);
|
||||
|
||||
return NoTransitionPage(
|
||||
child: wallet != null
|
||||
? WalletEditPage(
|
||||
onBack: () => _popOrGo(context, fallbackDestination),
|
||||
onBack: () => _popOrGo(context),
|
||||
)
|
||||
: Center(child: Text(loc.noWalletSelected)),
|
||||
);
|
||||
@@ -345,14 +361,10 @@ RouteBase payoutShellRoute() => ShellRoute(
|
||||
name: PayoutRoutes.walletTopUp,
|
||||
path: PayoutRoutes.walletTopUpPath,
|
||||
pageBuilder: (context, state) {
|
||||
final fallbackDestination = PayoutRoutes.fallbackFromState(
|
||||
state,
|
||||
defaultDestination: PayoutDestination.dashboard,
|
||||
);
|
||||
|
||||
return NoTransitionPage(
|
||||
child: WalletTopUpPage(
|
||||
onBack: () => _popOrGo(context, fallbackDestination),
|
||||
onBack: () => _popOrGo(context),
|
||||
),
|
||||
);
|
||||
},
|
||||
@@ -364,10 +376,14 @@ void _startPayment(
|
||||
BuildContext context, {
|
||||
Recipient? recipient,
|
||||
PaymentType? paymentType,
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
context.read<RecipientsProvider>().setCurrentObject(recipient?.id);
|
||||
context.pushToPayment(paymentType: paymentType, returnTo: returnTo);
|
||||
context.pushNamed(
|
||||
PayoutRoutes.payment,
|
||||
queryParameters: PayoutRoutes.buildQueryParameters(
|
||||
paymentType: paymentType,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
void _openAddRecipient(BuildContext context, {Recipient? recipient}) {
|
||||
@@ -375,28 +391,32 @@ void _openAddRecipient(BuildContext context, {Recipient? recipient}) {
|
||||
context.pushNamed(PayoutRoutes.addRecipient);
|
||||
}
|
||||
|
||||
void _openEditRecipient(BuildContext context, {required Recipient recipient}) {
|
||||
context.read<RecipientsProvider>().setCurrentObject(recipient.id);
|
||||
context.pushNamed(PayoutRoutes.editRecipient);
|
||||
}
|
||||
|
||||
void _openWalletEdit(
|
||||
BuildContext context,
|
||||
Wallet wallet, {
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
Wallet wallet,
|
||||
) {
|
||||
context.read<WalletsController>().selectWallet(wallet);
|
||||
context.pushToEditWallet(returnTo: returnTo);
|
||||
context.pushToEditWallet();
|
||||
}
|
||||
|
||||
void _openWalletTopUp(
|
||||
BuildContext context,
|
||||
Wallet wallet, {
|
||||
required PayoutDestination returnTo,
|
||||
}) {
|
||||
Wallet wallet,
|
||||
) {
|
||||
context.read<WalletsController>().selectWallet(wallet);
|
||||
context.pushToWalletTopUp(returnTo: returnTo);
|
||||
context.pushToWalletTopUp();
|
||||
}
|
||||
|
||||
void _popOrGo(BuildContext context, PayoutDestination destination) {
|
||||
if (Navigator.of(context).canPop()) {
|
||||
Navigator.of(context).pop();
|
||||
void _popOrGo(BuildContext context) {
|
||||
final router = GoRouter.of(context);
|
||||
if (router.canPop()) {
|
||||
router.pop();
|
||||
} else {
|
||||
context.goToPayout(destination);
|
||||
context.goToPayout(PayoutDestination.dashboard);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user