temp build

This commit is contained in:
Stephan D
2025-12-05 01:32:41 +01:00
parent 082d782a80
commit f71cc76f64
50 changed files with 853 additions and 707 deletions

View File

@@ -1,27 +1,25 @@
import 'package:flutter/material.dart';
import 'package:pshared/models/payment/methods/type.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/payment/methods/type.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pweb/providers/payment_methods.dart';
import 'package:pweb/utils/payment/dropdown.dart';
class PaymentMethodSelector extends StatelessWidget {
final PaymentMethodsProvider methodsProvider;
final ValueChanged<PaymentMethod> onMethodChanged;
const PaymentMethodSelector({
super.key,
required this.methodsProvider,
required this.onMethodChanged,
});
@override
Widget build(BuildContext context) {
return PaymentMethodDropdown(
methods: methodsProvider.methods,
initialValue: methodsProvider.selectedMethod,
onChanged: onMethodChanged,
);
}
Widget build(BuildContext context) => Consumer<PaymentMethodsProvider>(builder:(context, provider, _) => PaymentMethodDropdown(
methods: provider.methods,
initialValue: provider.currentObject,
onChanged: onMethodChanged,
));
}

View File

@@ -3,12 +3,12 @@ import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/providers/payment_flow_provider.dart';
import 'package:pweb/pages/payment_methods/widgets/payment_page_body.dart';
import 'package:pweb/providers/page_selector.dart';
import 'package:pweb/providers/payment_methods.dart';
import 'package:pweb/providers/recipient.dart';
class PaymentPage extends StatefulWidget {
@@ -49,30 +49,22 @@ class _PaymentPageState extends State<PaymentPage> {
void _initializePaymentPage() {
final pageSelector = context.read<PageSelectorProvider>();
final methodsProvider = context.read<PaymentMethodsProvider>();
final recipientProvider = context.read<RecipientProvider>();
final recipientProvider = context.read<RecipientsProvider>();
pageSelector.handleWalletAutoSelection();
if (methodsProvider.methods.isEmpty && !methodsProvider.isLoading) {
methodsProvider.loadMethods();
}
if (recipientProvider.recipients.isEmpty && !recipientProvider.isLoading) {
recipientProvider.loadRecipients();
}
_flowProvider.syncWithSelector(pageSelector);
}
void _handleSearchChanged(String query) {
context.read<RecipientProvider>().setQuery(query);
context.read<RecipientsProvider>().setQuery(query);
}
void _handleRecipientSelected(Recipient recipient) {
final pageSelector = context.read<PageSelectorProvider>();
final recipientProvider = context.read<RecipientProvider>();
final recipientProvider = context.read<RecipientsProvider>();
recipientProvider.selectRecipient(recipient);
recipientProvider.setCurrentObject(recipient.id);
pageSelector.selectRecipient(recipient);
_flowProvider.reset(pageSelector);
_clearSearchField();
@@ -80,9 +72,9 @@ class _PaymentPageState extends State<PaymentPage> {
void _handleRecipientCleared() {
final pageSelector = context.read<PageSelectorProvider>();
final recipientProvider = context.read<RecipientProvider>();
final recipientProvider = context.read<RecipientsProvider>();
recipientProvider.selectRecipient(null);
recipientProvider.setCurrentObject(null);
pageSelector.selectRecipient(null);
_flowProvider.reset(pageSelector);
_clearSearchField();
@@ -91,7 +83,7 @@ class _PaymentPageState extends State<PaymentPage> {
void _clearSearchField() {
_searchController.clear();
_searchFocusNode.unfocus();
context.read<RecipientProvider>().setQuery('');
context.read<RecipientsProvider>().setQuery('');
}
void _handleSendPayment() {

View File

@@ -31,7 +31,7 @@ class PaymentMethodTile extends StatelessWidget {
final theme = Theme.of(context);
return Opacity(
opacity: method.isEnabled ? 1 : 0.5,
opacity: method.isArchived ? 1 : 0.5,
child: Card(
margin: const EdgeInsets.symmetric(vertical: 4),
elevation: 0,
@@ -41,11 +41,12 @@ class PaymentMethodTile extends StatelessWidget {
onTap: makeMain,
title: Row(
children: [
Expanded(child: Text(method.label)),
Text(
method.details,
style: theme.textTheme.bodySmall,
),
Expanded(child: Text(method.name)),
if (method.description != null)
Text(
method.description!,
style: theme.textTheme.bodySmall,
),
],
),
trailing: Row(
@@ -73,12 +74,10 @@ class PaymentMethodTile extends StatelessWidget {
);
}
Widget _buildEnabledSwitch() {
return Switch.adaptive(
value: method.isEnabled,
onChanged: toggleEnabled,
);
}
Widget _buildEnabledSwitch() => Switch.adaptive(
value: method.isArchived,
onChanged: toggleEnabled,
);
Widget _buildPopupMenu(AppLocalizations l10n) {
return PopupMenuButton<String>(

View File

@@ -1,7 +1,10 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/recipient/pmethods.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/pages/payment_methods/header.dart';
import 'package:pweb/pages/payment_methods/method_selector.dart';
@@ -12,9 +15,8 @@ import 'package:pweb/pages/payment_methods/widgets/recipient_section.dart';
import 'package:pweb/pages/payment_methods/widgets/section_title.dart';
import 'package:pweb/providers/page_selector.dart';
import 'package:pweb/providers/payment_flow_provider.dart';
import 'package:pweb/providers/payment_methods.dart';
import 'package:pweb/providers/recipient.dart';
import 'package:pweb/utils/dimensions.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
@@ -43,7 +45,7 @@ class PaymentPageBody extends StatelessWidget {
final dimensions = AppDimensions();
final pageSelector = context.watch<PageSelectorProvider>();
final methodsProvider = context.watch<PaymentMethodsProvider>();
final recipientProvider = context.watch<RecipientProvider>();
final recipientProvider = context.watch<RecipientsProvider>();
final flowProvider = context.watch<PaymentFlowProvider>();
final recipient = pageSelector.selectedRecipient;
final loc = AppLocalizations.of(context)!;
@@ -79,8 +81,7 @@ class PaymentPageBody extends StatelessWidget {
SectionTitle(loc.sourceOfFunds),
SizedBox(height: dimensions.paddingSmall),
PaymentMethodSelector(
methodsProvider: methodsProvider,
onMethodChanged: methodsProvider.selectMethod,
onMethodChanged: (m) => methodsProvider.setCurrentObject(m.id),
),
SizedBox(height: dimensions.paddingXLarge),

View File

@@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/pages/address_book/page/search.dart';
import 'package:pweb/pages/payment_methods/widgets/card.dart';
import 'package:pweb/pages/payment_methods/widgets/search.dart';
import 'package:pweb/pages/payment_methods/widgets/section_title.dart';
import 'package:pweb/providers/recipient.dart';
import 'package:pweb/utils/dimensions.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
@@ -15,7 +15,7 @@ import 'package:pweb/generated/i18n/app_localizations.dart';
class RecipientSection extends StatelessWidget {
final Recipient? recipient;
final AppDimensions dimensions;
final RecipientProvider recipientProvider;
final RecipientsProvider recipientProvider;
final TextEditingController searchController;
final FocusNode searchFocusNode;
final ValueChanged<String> onSearchChanged;

View File

@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:pshared/models/recipient/recipient.dart';
import 'package:pshared/provider/recipient/provider.dart';
import 'package:pweb/providers/recipient.dart';
import 'package:pweb/utils/dimensions.dart';
import 'package:pweb/generated/i18n/app_localizations.dart';
@@ -10,7 +10,7 @@ import 'package:pweb/generated/i18n/app_localizations.dart';
class RecipientSearchResults extends StatelessWidget {
final AppDimensions dimensions;
final RecipientProvider recipientProvider;
final RecipientsProvider recipientProvider;
final ValueChanged<Recipient> onRecipientSelected;
const RecipientSearchResults({