Fixed payment method deletion in recipient settings with better flow

This commit is contained in:
Arseni
2026-01-23 16:28:09 +03:00
parent bdb84ac6ac
commit 3765780a4d
7 changed files with 265 additions and 82 deletions

View File

@@ -13,6 +13,7 @@ import 'package:pshared/provider/payment/flow.dart';
import 'package:pshared/provider/payment/provider.dart';
import 'package:pshared/provider/payment/quotation/quotation.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pshared/provider/recipient/methods_cache.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pweb/app/router/pages.dart';
@@ -29,6 +30,7 @@ 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';
import 'package:pweb/pages/wallet_top_up/page.dart';
import 'package:pweb/widgets/dialogs/confirmation_dialog.dart';
import 'package:pweb/widgets/error/snackbar.dart';
import 'package:pweb/widgets/sidebar/destinations.dart';
import 'package:pweb/widgets/sidebar/page.dart';
@@ -43,6 +45,10 @@ RouteBase payoutShellRoute() => ShellRoute(
create: (_) => PaymentMethodsProvider(),
update: (context, organizations, recipients, provider) => provider!..updateProviders(organizations, recipients),
),
ChangeNotifierProxyProvider2<OrganizationsProvider, RecipientsProvider, RecipientMethodsCacheProvider>(
create: (_) => RecipientMethodsCacheProvider(),
update: (context, organizations, recipients, provider) => provider!..updateProviders(organizations, recipients),
),
ChangeNotifierProxyProvider2<RecipientsProvider, PaymentMethodsProvider, PaymentFlowProvider>(
create: (_) => PaymentFlowProvider(initialType: PaymentType.bankAccount),
update: (context, recipients, methods, provider) => provider!..update(
@@ -118,24 +124,13 @@ RouteBase payoutShellRoute() => ShellRoute(
recipient: recipient,
),
onDeleteRecipient: (recipient) async {
final confirmed = await showDialog<bool>(
final confirmed = await showConfirmationDialog(
context: context,
builder: (dialogContext) => AlertDialog(
title: Text(loc.delete),
content: Text(loc.deleteRecipientConfirmation),
actions: [
TextButton(
onPressed: () => Navigator.pop(dialogContext, false),
child: Text(loc.cancel),
),
ElevatedButton(
onPressed: () => Navigator.pop(dialogContext, true),
child: Text(loc.delete),
),
],
),
title: loc.delete,
message: loc.deleteRecipientConfirmation,
confirmLabel: loc.delete,
);
if (confirmed != true) return;
if (!confirmed) return;
await executeActionWithNotification(
context: context,
action: () async =>