added ledger as souec of funds for payouts

This commit is contained in:
Arseni
2026-03-03 21:03:30 +03:00
parent 3f578353da
commit 51c72a87ae
29 changed files with 796 additions and 385 deletions

View File

@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:pshared/controllers/balance_mask/wallets.dart';
import 'package:pshared/controllers/payment/source.dart';
import 'package:pshared/models/payment/settlement_mode.dart';
import 'package:pshared/provider/payment/amount.dart';
import 'package:pshared/utils/currency.dart';
@@ -15,7 +15,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
final FocusNode focusNode = FocusNode();
PaymentAmountProvider? _provider;
WalletsController? _wallets;
PaymentSourceController? _source;
bool _isSyncingText = false;
PaymentAmountMode _mode = PaymentAmountMode.debit;
@@ -36,7 +36,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
PaymentAmountMode.settlement => _settlementCurrencyCode,
};
void update(PaymentAmountProvider provider, WalletsController wallets) {
void update(PaymentAmountProvider provider, PaymentSourceController source) {
if (!identical(_provider, provider)) {
_provider?.removeListener(_handleProviderChanged);
_provider = provider;
@@ -44,11 +44,11 @@ class PaymentAmountFieldController extends ChangeNotifier {
_syncModeWithProvider(provider);
}
if (!identical(_wallets, wallets)) {
_wallets?.removeListener(_handleWalletsChanged);
_wallets = wallets;
_wallets?.addListener(_handleWalletsChanged);
_normalizeModeForWallet();
if (!identical(_source, source)) {
_source?.removeListener(_handleSourceChanged);
_source = source;
_source?.addListener(_handleSourceChanged);
_normalizeModeForSource();
}
_syncTextWithAmount(provider.amount);
@@ -79,16 +79,14 @@ class PaymentAmountFieldController extends ChangeNotifier {
_syncTextWithAmount(provider.amount);
final changed = _syncModeWithProvider(provider);
if (changed) {
_normalizeModeForWallet();
_normalizeModeForSource();
notifyListeners();
}
}
void _handleWalletsChanged() {
final changed = _normalizeModeForWallet();
if (changed) {
notifyListeners();
}
void _handleSourceChanged() {
_normalizeModeForSource();
notifyListeners();
}
bool _syncModeWithProvider(PaymentAmountProvider provider) {
@@ -98,7 +96,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
return true;
}
bool _normalizeModeForWallet() {
bool _normalizeModeForSource() {
if (isReverseModeAvailable || _mode != PaymentAmountMode.settlement) {
return false;
}
@@ -108,9 +106,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
}
String? get _sourceCurrencyCode {
final selectedWallet = _wallets?.selectedWallet;
if (selectedWallet == null) return null;
return currencyCodeToString(selectedWallet.currency);
return _source?.selectedCurrencyCode;
}
PaymentAmountMode _modeFromSettlementMode(SettlementMode mode) =>
@@ -150,7 +146,7 @@ class PaymentAmountFieldController extends ChangeNotifier {
@override
void dispose() {
_provider?.removeListener(_handleProviderChanged);
_wallets?.removeListener(_handleWalletsChanged);
_source?.removeListener(_handleSourceChanged);
focusNode.dispose();
textController.dispose();
super.dispose();