refactoring for recipient addition page

This commit is contained in:
Arseni
2026-01-29 19:22:30 +03:00
parent da8da04ae9
commit efa69b43b2
47 changed files with 1376 additions and 532 deletions

View File

@@ -11,6 +11,7 @@ import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/pages/payment_methods/payment_page/body.dart';
import 'package:pweb/utils/recipient/filtering.dart';
import 'package:pweb/widgets/sidebar/destinations.dart';
import 'package:pweb/services/posthog.dart';
import 'package:pweb/widgets/dialogs/payment_status_dialog.dart';
@@ -35,6 +36,8 @@ class PaymentPage extends StatefulWidget {
class _PaymentPageState extends State<PaymentPage> {
late final TextEditingController _searchController;
late final FocusNode _searchFocusNode;
Recipient? _previousRecipient;
String _query = '';
@override
void initState() {
@@ -58,17 +61,25 @@ class _PaymentPageState extends State<PaymentPage> {
}
void _handleSearchChanged(String query) {
context.read<RecipientsProvider>().setQuery(query);
setState(() {
_query = query;
});
}
void _handleRecipientSelected(Recipient recipient) {
final recipientProvider = context.read<RecipientsProvider>();
setState(() {
_previousRecipient = recipientProvider.currentObject;
});
recipientProvider.setCurrentObject(recipient.id);
_clearSearchField();
}
void _handleRecipientCleared() {
final recipientProvider = context.read<RecipientsProvider>();
setState(() {
_previousRecipient = recipientProvider.currentObject;
});
recipientProvider.setCurrentObject(null);
_clearSearchField();
}
@@ -76,7 +87,9 @@ class _PaymentPageState extends State<PaymentPage> {
void _clearSearchField() {
_searchController.clear();
_searchFocusNode.unfocus();
context.read<RecipientsProvider>().setQuery('');
setState(() {
_query = '';
});
}
void _handleSendPayment() {
@@ -97,16 +110,21 @@ class _PaymentPageState extends State<PaymentPage> {
@override
Widget build(BuildContext context) {
final methodsProvider = context.watch<PaymentMethodsProvider>();
final recipientProvider = context.read<RecipientsProvider>();
final recipient = context.select<RecipientsProvider, Recipient?>(
(provider) => provider.currentObject,
final recipientProvider = context.watch<RecipientsProvider>();
final recipient = recipientProvider.currentObject;
final filteredRecipients = filterRecipients(
recipients: recipientProvider.recipients,
query: _query,
);
return PaymentPageBody(
onBack: widget.onBack,
fallbackDestination: widget.fallbackDestination,
recipient: recipient,
previousRecipient: _previousRecipient,
recipientProvider: recipientProvider,
searchQuery: _query,
filteredRecipients: filteredRecipients,
methodsProvider: methodsProvider,
onWalletSelected: context.read<WalletsController>().selectWallet,
searchController: _searchController,