temp build
This commit is contained in:
@@ -1,41 +1,40 @@
|
||||
import 'package:collection/collection.dart';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
|
||||
import 'package:pshared/models/payment/methods/type.dart';
|
||||
import 'package:pshared/models/payment/type.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/models/wallet.dart';
|
||||
import 'package:pweb/providers/payment_methods.dart';
|
||||
import 'package:pweb/providers/wallets.dart';
|
||||
import 'package:pweb/widgets/sidebar/destinations.dart';
|
||||
import 'package:pweb/services/amplitude.dart';
|
||||
import 'package:pweb/providers/recipient.dart';
|
||||
import 'package:pweb/widgets/sidebar/destinations.dart';
|
||||
|
||||
|
||||
class PageSelectorProvider extends ChangeNotifier {
|
||||
static final _logger = Logger('provider.page_selector');
|
||||
|
||||
PayoutDestination _selected = PayoutDestination.dashboard;
|
||||
PaymentType? _type;
|
||||
bool _cameFromRecipientList = false;
|
||||
PayoutDestination? _previousDestination;
|
||||
|
||||
RecipientProvider? recipientProvider;
|
||||
WalletsProvider? walletsProvider;
|
||||
PaymentMethodsProvider? methodsProvider;
|
||||
late RecipientsProvider recipientProvider;
|
||||
late WalletsProvider walletsProvider;
|
||||
late PaymentMethodsProvider methodsProvider;
|
||||
|
||||
PayoutDestination get selected => _selected;
|
||||
PaymentType? get type => _type;
|
||||
bool get cameFromRecipientList => _cameFromRecipientList;
|
||||
|
||||
PageSelectorProvider({
|
||||
this.recipientProvider,
|
||||
this.walletsProvider,
|
||||
this.methodsProvider,
|
||||
});
|
||||
PageSelectorProvider();
|
||||
|
||||
void update(
|
||||
RecipientProvider recipientProv,
|
||||
RecipientsProvider recipientProv,
|
||||
WalletsProvider walletsProv,
|
||||
PaymentMethodsProvider methodsProv,
|
||||
) {
|
||||
@@ -50,44 +49,30 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void selectRecipient(Recipient? recipient, {bool fromList = false}) {
|
||||
if (recipientProvider != null) {
|
||||
recipientProvider!.selectRecipient(recipient);
|
||||
_cameFromRecipientList = fromList;
|
||||
_setPreviousDestination();
|
||||
_selected = PayoutDestination.payment;
|
||||
notifyListeners();
|
||||
} else {
|
||||
debugPrint("RecipientProvider is null — cannot select recipient");
|
||||
}
|
||||
recipientProvider.setCurrentObject(recipient?.id);
|
||||
_cameFromRecipientList = fromList;
|
||||
_setPreviousDestination();
|
||||
_selected = PayoutDestination.payment;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void editRecipient(Recipient? recipient, {bool fromList = false}) {
|
||||
if (recipientProvider != null) {
|
||||
recipientProvider!.selectRecipient(recipient);
|
||||
_cameFromRecipientList = fromList;
|
||||
_selected = PayoutDestination.addrecipient;
|
||||
notifyListeners();
|
||||
} else {
|
||||
debugPrint("RecipientProvider is null — cannot select recipient");
|
||||
}
|
||||
recipientProvider.setCurrentObject(recipient?.id);
|
||||
_cameFromRecipientList = fromList;
|
||||
_selected = PayoutDestination.addrecipient;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void goToAddRecipient() {
|
||||
if (recipientProvider != null) {
|
||||
AmplitudeService.recipientAddStarted();
|
||||
recipientProvider!.selectRecipient(null);
|
||||
_selected = PayoutDestination.addrecipient;
|
||||
_cameFromRecipientList = false;
|
||||
notifyListeners();
|
||||
} else {
|
||||
debugPrint("RecipientProvider is null — cannot go to add recipient");
|
||||
}
|
||||
AmplitudeService.recipientAddStarted();
|
||||
recipientProvider!.setCurrentObject(null);
|
||||
_selected = PayoutDestination.addrecipient;
|
||||
_cameFromRecipientList = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void startPaymentWithoutRecipient(PaymentType type) {
|
||||
if (recipientProvider != null) {
|
||||
recipientProvider!.selectRecipient(null);
|
||||
}
|
||||
recipientProvider.setCurrentObject(null);
|
||||
_type = type;
|
||||
_cameFromRecipientList = false;
|
||||
_setPreviousDestination();
|
||||
@@ -111,13 +96,9 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void selectWallet(Wallet wallet) {
|
||||
if (walletsProvider != null) {
|
||||
walletsProvider!.selectWallet(wallet);
|
||||
_selected = PayoutDestination.editwallet;
|
||||
notifyListeners();
|
||||
} else {
|
||||
debugPrint("WalletsProvider is null — cannot select wallet");
|
||||
}
|
||||
walletsProvider.selectWallet(wallet);
|
||||
_selected = PayoutDestination.editwallet;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void startPaymentFromWallet(Wallet wallet) {
|
||||
@@ -129,26 +110,26 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
PaymentMethod? getPaymentMethodForWallet(Wallet wallet) {
|
||||
if (methodsProvider == null || methodsProvider!.methods.isEmpty) {
|
||||
if (methodsProvider.methods.isEmpty) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return methodsProvider!.methods.firstWhereOrNull(
|
||||
(method) => method.type == PaymentType.wallet &&
|
||||
method.details.contains(wallet.walletUserID)
|
||||
(method.description?.contains(wallet.walletUserID) ?? false),
|
||||
);
|
||||
}
|
||||
|
||||
Map<PaymentType, Object> getAvailablePaymentTypes() {
|
||||
final recipient = selectedRecipient;
|
||||
if (recipient == null) return {};
|
||||
if ((recipient == null) || !methodsProvider.isReady) return {};
|
||||
|
||||
final methodsForRecipient = methodsProvider.methods.where(
|
||||
(method) => !method.isArchived && method.recipientRef == recipient.id,
|
||||
);
|
||||
|
||||
return {
|
||||
if (recipient.card != null) PaymentType.card: recipient.card!,
|
||||
if (recipient.iban != null) PaymentType.iban: recipient.iban!,
|
||||
if (recipient.wallet != null) PaymentType.wallet: recipient.wallet!,
|
||||
if (recipient.bank != null) PaymentType.bankAccount: recipient.bank!,
|
||||
if (recipient.cryptoAddress != null) PaymentType.cryptoAddress: recipient.cryptoAddress!,
|
||||
for (final method in methodsForRecipient) method.type: method.data,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -158,11 +139,11 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
|
||||
if (availableTypes.containsKey(currentType)) {
|
||||
return currentType;
|
||||
} else if (availableTypes.isNotEmpty) {
|
||||
return availableTypes.keys.first;
|
||||
} else {
|
||||
return PaymentType.bankAccount;
|
||||
}
|
||||
if (availableTypes.isNotEmpty) {
|
||||
return availableTypes.keys.first;
|
||||
}
|
||||
return PaymentType.bankAccount;
|
||||
}
|
||||
|
||||
bool shouldShowPaymentForm() {
|
||||
@@ -170,11 +151,11 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
}
|
||||
|
||||
void handleWalletAutoSelection() {
|
||||
if (selectedWallet != null && methodsProvider != null) {
|
||||
if (selectedWallet != null) {
|
||||
final wallet = selectedWallet!;
|
||||
final matchingMethod = getPaymentMethodForWallet(wallet);
|
||||
if (matchingMethod != null) {
|
||||
methodsProvider!.selectMethod(matchingMethod);
|
||||
methodsProvider.setCurrentObject(matchingMethod.id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -185,6 +166,6 @@ class PageSelectorProvider extends ChangeNotifier {
|
||||
}
|
||||
}
|
||||
|
||||
Recipient? get selectedRecipient => recipientProvider?.selectedRecipient;
|
||||
Wallet? get selectedWallet => walletsProvider?.selectedWallet;
|
||||
Recipient? get selectedRecipient => recipientProvider.currentObject;
|
||||
Wallet? get selectedWallet => walletsProvider.selectedWallet;
|
||||
}
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:pshared/models/payment/methods/type.dart';
|
||||
|
||||
import 'package:pweb/services/payments/payment_methods.dart';
|
||||
|
||||
|
||||
class PaymentMethodsProvider extends ChangeNotifier {
|
||||
final PaymentMethodsService service;
|
||||
|
||||
List<PaymentMethod> _methods = [];
|
||||
PaymentMethod? _selectedMethod;
|
||||
bool _isLoading = false;
|
||||
String? _error;
|
||||
|
||||
PaymentMethodsProvider({required this.service});
|
||||
|
||||
List<PaymentMethod> get methods => _methods;
|
||||
PaymentMethod? get selectedMethod => _selectedMethod;
|
||||
bool get isLoading => _isLoading;
|
||||
String? get error => _error;
|
||||
|
||||
Future<void> loadMethods() async {
|
||||
_isLoading = true;
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
|
||||
try {
|
||||
_methods = await service.fetchMethods();
|
||||
_selectedMethod = _methods.firstWhere((m) => m.isMain, orElse: () => _methods.first);
|
||||
} catch (e) {
|
||||
_error = e.toString();
|
||||
}
|
||||
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void selectMethod(PaymentMethod method) {
|
||||
_selectedMethod = method;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void deleteMethod(PaymentMethod method) {
|
||||
_methods.remove(method);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void reorderMethods(int oldIndex, int newIndex) {
|
||||
if (newIndex > oldIndex) newIndex--;
|
||||
final item = _methods.removeAt(oldIndex);
|
||||
_methods.insert(newIndex, item);
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void toggleEnabled(PaymentMethod method, bool value) {
|
||||
method.isEnabled = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void makeMain(PaymentMethod method) {
|
||||
for (final m in _methods) {
|
||||
m.isMain = false;
|
||||
}
|
||||
method.isMain = true;
|
||||
selectMethod(method);
|
||||
}
|
||||
}
|
||||
@@ -1,80 +0,0 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
|
||||
import 'package:pshared/models/recipient/filter.dart';
|
||||
import 'package:pshared/models/recipient/recipient.dart';
|
||||
import 'package:pshared/models/recipient/status.dart';
|
||||
|
||||
import 'package:pweb/services/recipient/recipient.dart';
|
||||
|
||||
|
||||
class RecipientProvider extends ChangeNotifier {
|
||||
final RecipientService _service;
|
||||
|
||||
RecipientProvider(this._service);
|
||||
|
||||
List<Recipient> _recipients = [];
|
||||
bool _isLoading = false;
|
||||
String? _error;
|
||||
RecipientFilter _selectedFilter = RecipientFilter.all;
|
||||
String _query = '';
|
||||
|
||||
Recipient? _selectedRecipient;
|
||||
|
||||
List<Recipient> get recipients => _recipients;
|
||||
bool get isLoading => _isLoading;
|
||||
String? get error => _error;
|
||||
RecipientFilter get selectedFilter => _selectedFilter;
|
||||
String get query => _query;
|
||||
Recipient? get selectedRecipient => _selectedRecipient;
|
||||
|
||||
List<Recipient> get filteredRecipients {
|
||||
List<Recipient> filtered = _recipients.where((r) {
|
||||
switch (_selectedFilter) {
|
||||
case RecipientFilter.ready:
|
||||
return r.status == RecipientStatus.ready;
|
||||
case RecipientFilter.registered:
|
||||
return r.status == RecipientStatus.registered;
|
||||
case RecipientFilter.notRegistered:
|
||||
return r.status == RecipientStatus.notRegistered;
|
||||
case RecipientFilter.all:
|
||||
return true;
|
||||
}
|
||||
}).toList();
|
||||
|
||||
if (_query.isNotEmpty) {
|
||||
filtered = filtered.where((r) => r.matchesQuery(_query)).toList();
|
||||
}
|
||||
|
||||
return filtered;
|
||||
}
|
||||
|
||||
Future<void> loadRecipients() async {
|
||||
_isLoading = true;
|
||||
_error = null;
|
||||
notifyListeners();
|
||||
|
||||
try {
|
||||
_recipients = await _service.fetchRecipients();
|
||||
} catch (e) {
|
||||
_error = e.toString();
|
||||
} finally {
|
||||
_isLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
void setFilter(RecipientFilter filter) {
|
||||
_selectedFilter = filter;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void setQuery(String query) {
|
||||
_query = query.trim().toLowerCase();
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void selectRecipient(Recipient? recipient) {
|
||||
_selectedRecipient = recipient;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,9 @@
|
||||
import 'package:pshared/models/payment/upload_history_item.dart';
|
||||
|
||||
import 'package:pweb/providers/template.dart';
|
||||
import 'package:pweb/services/payments/upload_history.dart';
|
||||
import 'package:pweb/services/payments/history.dart';
|
||||
|
||||
|
||||
class UploadHistoryProvider extends FutureProviderTemplate<List<UploadHistoryItem>> {
|
||||
UploadHistoryProvider({required UploadHistoryService service})
|
||||
: super(loader: service.fetchHistory);
|
||||
UploadHistoryProvider({required UploadHistoryService service}) : super(loader: service.fetchHistory);
|
||||
}
|
||||
Reference in New Issue
Block a user