verification before payment and email fixes
This commit is contained in:
@@ -17,6 +17,9 @@ import 'package:pweb/widgets/sidebar/destinations.dart';
|
||||
import 'package:pweb/services/posthog.dart';
|
||||
import 'package:pweb/widgets/dialogs/payment_status_dialog.dart';
|
||||
import 'package:pweb/controllers/payment_page.dart';
|
||||
import 'package:pweb/controllers/payout_verification.dart';
|
||||
import 'package:pweb/utils/payment/payout_verification_flow.dart';
|
||||
import 'package:pweb/models/control_state.dart';
|
||||
|
||||
|
||||
class PaymentPage extends StatefulWidget {
|
||||
@@ -98,8 +101,15 @@ class _PaymentPageState extends State<PaymentPage> {
|
||||
final flowProvider = context.read<PaymentFlowProvider>();
|
||||
final paymentProvider = context.read<PaymentProvider>();
|
||||
final controller = context.read<PaymentPageController>();
|
||||
final verificationController = context.read<PayoutVerificationController>();
|
||||
if (paymentProvider.isLoading) return;
|
||||
|
||||
final verified = await runPayoutVerification(
|
||||
context: context,
|
||||
controller: verificationController,
|
||||
);
|
||||
if (!verified || !mounted) return;
|
||||
|
||||
final isSuccess = await controller.sendPayment();
|
||||
if (!mounted) return;
|
||||
|
||||
@@ -117,11 +127,16 @@ class _PaymentPageState extends State<PaymentPage> {
|
||||
Widget build(BuildContext context) {
|
||||
final methodsProvider = context.watch<PaymentMethodsProvider>();
|
||||
final recipientProvider = context.watch<RecipientsProvider>();
|
||||
final verificationController =
|
||||
context.watch<PayoutVerificationController>();
|
||||
final recipient = recipientProvider.currentObject;
|
||||
final filteredRecipients = filterRecipients(
|
||||
recipients: recipientProvider.recipients,
|
||||
query: _query,
|
||||
);
|
||||
final sendState = verificationController.isCooldownActive
|
||||
? ControlState.disabled
|
||||
: ControlState.enabled;
|
||||
|
||||
return PaymentPageBody(
|
||||
onBack: widget.onBack,
|
||||
@@ -132,6 +147,9 @@ class _PaymentPageState extends State<PaymentPage> {
|
||||
searchQuery: _query,
|
||||
filteredRecipients: filteredRecipients,
|
||||
methodsProvider: methodsProvider,
|
||||
sendState: sendState,
|
||||
cooldownRemainingSeconds:
|
||||
verificationController.cooldownRemainingSeconds,
|
||||
onWalletSelected: context.read<WalletsController>().selectWallet,
|
||||
searchController: _searchController,
|
||||
searchFocusNode: _searchFocusNode,
|
||||
|
||||
@@ -8,6 +8,7 @@ import 'package:pshared/provider/recipient/provider.dart';
|
||||
import 'package:pweb/widgets/sidebar/destinations.dart';
|
||||
import 'package:pweb/pages/payment_methods/widgets/state_view.dart';
|
||||
import 'package:pweb/pages/payment_methods/payment_page/page.dart';
|
||||
import 'package:pweb/models/control_state.dart';
|
||||
|
||||
import 'package:pweb/generated/i18n/app_localizations.dart';
|
||||
|
||||
@@ -20,6 +21,8 @@ class PaymentPageBody extends StatelessWidget {
|
||||
final String searchQuery;
|
||||
final List<Recipient> filteredRecipients;
|
||||
final PaymentMethodsProvider methodsProvider;
|
||||
final ControlState sendState;
|
||||
final int cooldownRemainingSeconds;
|
||||
final ValueChanged<Wallet> onWalletSelected;
|
||||
final PayoutDestination fallbackDestination;
|
||||
final TextEditingController searchController;
|
||||
@@ -38,6 +41,8 @@ class PaymentPageBody extends StatelessWidget {
|
||||
required this.searchQuery,
|
||||
required this.filteredRecipients,
|
||||
required this.methodsProvider,
|
||||
required this.sendState,
|
||||
required this.cooldownRemainingSeconds,
|
||||
required this.onWalletSelected,
|
||||
required this.fallbackDestination,
|
||||
required this.searchController,
|
||||
@@ -71,6 +76,8 @@ class PaymentPageBody extends StatelessWidget {
|
||||
filteredRecipients: filteredRecipients,
|
||||
onWalletSelected: onWalletSelected,
|
||||
fallbackDestination: fallbackDestination,
|
||||
sendState: sendState,
|
||||
cooldownRemainingSeconds: cooldownRemainingSeconds,
|
||||
searchController: searchController,
|
||||
searchFocusNode: searchFocusNode,
|
||||
onSearchChanged: onSearchChanged,
|
||||
|
||||
@@ -13,7 +13,9 @@ import 'package:pweb/pages/payment_methods/widgets/payment_info_section.dart';
|
||||
import 'package:pweb/pages/payment_methods/widgets/recipient_section.dart';
|
||||
import 'package:pweb/pages/payment_methods/widgets/section_title.dart';
|
||||
import 'package:pweb/utils/dimensions.dart';
|
||||
import 'package:pweb/widgets/cooldown_hint.dart';
|
||||
import 'package:pweb/widgets/sidebar/destinations.dart';
|
||||
import 'package:pweb/models/control_state.dart';
|
||||
|
||||
import 'package:pweb/generated/i18n/app_localizations.dart';
|
||||
|
||||
@@ -27,6 +29,8 @@ class PaymentPageContent extends StatelessWidget {
|
||||
final List<Recipient> filteredRecipients;
|
||||
final ValueChanged<Wallet> onWalletSelected;
|
||||
final PayoutDestination fallbackDestination;
|
||||
final ControlState sendState;
|
||||
final int cooldownRemainingSeconds;
|
||||
final TextEditingController searchController;
|
||||
final FocusNode searchFocusNode;
|
||||
final ValueChanged<String> onSearchChanged;
|
||||
@@ -44,6 +48,8 @@ class PaymentPageContent extends StatelessWidget {
|
||||
required this.filteredRecipients,
|
||||
required this.onWalletSelected,
|
||||
required this.fallbackDestination,
|
||||
required this.sendState,
|
||||
required this.cooldownRemainingSeconds,
|
||||
required this.searchController,
|
||||
required this.searchFocusNode,
|
||||
required this.onSearchChanged,
|
||||
@@ -104,7 +110,20 @@ class PaymentPageContent extends StatelessWidget {
|
||||
SizedBox(height: dimensions.paddingLarge),
|
||||
const PaymentFormWidget(),
|
||||
SizedBox(height: dimensions.paddingXXXLarge),
|
||||
SendButton(onPressed: onSend),
|
||||
Column(
|
||||
mainAxisAlignment: MainAxisAlignment.center,
|
||||
children: [
|
||||
SendButton(
|
||||
onPressed: onSend,
|
||||
state: sendState,
|
||||
),
|
||||
if (sendState == ControlState.disabled &&
|
||||
cooldownRemainingSeconds > 0) ...[
|
||||
SizedBox(height: dimensions.paddingSmall),
|
||||
CooldownHint(seconds: cooldownRemainingSeconds),
|
||||
],
|
||||
],
|
||||
),
|
||||
SizedBox(height: dimensions.paddingLarge),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user