From 4bc39450d7a8a3f62654443b64ca5736918920c7 Mon Sep 17 00:00:00 2001 From: redDwarf03 Date: Tue, 19 Nov 2024 18:07:51 +0100 Subject: [PATCH] chore: :recycle: Fix code following review --- .../low_uco_in_dollars_warning_value.dart | 19 +- .../low_uco_in_dollars_warning_value.g.dart | 188 ++++++++++++++++-- .../liquidity_add_confirm_sheet.dart | 38 ++-- .../components/swap_confirm_sheet.dart | 17 +- 4 files changed, 208 insertions(+), 54 deletions(-) diff --git a/lib/application/low_uco_in_dollars_warning_value.dart b/lib/application/low_uco_in_dollars_warning_value.dart index b1190dc0..24386d71 100755 --- a/lib/application/low_uco_in_dollars_warning_value.dart +++ b/lib/application/low_uco_in_dollars_warning_value.dart @@ -6,18 +6,27 @@ import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'low_uco_in_dollars_warning_value.g.dart'; @riverpod -double lowUCOInDollarsWarningValue(LowUCOInDollarsWarningValueRef ref) { +bool checkLowUCOInDollarsWarningValue( + CheckLowUCOInDollarsWarningValueRef ref, + double balance, + double amount, +) { const kLowUCOInDollarsWarningValue = 0.20; + final remainingBalanceInUCO = + (Decimal.parse(balance.toString()) - Decimal.parse(amount.toString())) + .toDouble(); + final archethicOracleUCO = ref.watch(aedappfm.ArchethicOracleUCOProviders.archethicOracleUCO); if (archethicOracleUCO.usd == 0) { // 20 UCO by default if no Oracle - return 20; + return remainingBalanceInUCO > 20; } - return (Decimal.parse(kLowUCOInDollarsWarningValue.toString()) / - Decimal.parse(archethicOracleUCO.usd.toString())) - .toDouble(); + return remainingBalanceInUCO > + (Decimal.parse(kLowUCOInDollarsWarningValue.toString()) / + Decimal.parse(archethicOracleUCO.usd.toString())) + .toDouble(); } diff --git a/lib/application/low_uco_in_dollars_warning_value.g.dart b/lib/application/low_uco_in_dollars_warning_value.g.dart index b06b2f7c..145e704c 100644 --- a/lib/application/low_uco_in_dollars_warning_value.g.dart +++ b/lib/application/low_uco_in_dollars_warning_value.g.dart @@ -6,22 +6,176 @@ part of 'low_uco_in_dollars_warning_value.dart'; // RiverpodGenerator // ************************************************************************** -String _$lowUCOInDollarsWarningValueHash() => - r'899d1e6a5a8d241b1d476ec713910b471965be46'; - -/// See also [lowUCOInDollarsWarningValue]. -@ProviderFor(lowUCOInDollarsWarningValue) -final lowUCOInDollarsWarningValueProvider = - AutoDisposeProvider.internal( - lowUCOInDollarsWarningValue, - name: r'lowUCOInDollarsWarningValueProvider', - debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product') - ? null - : _$lowUCOInDollarsWarningValueHash, - dependencies: null, - allTransitiveDependencies: null, -); - -typedef LowUCOInDollarsWarningValueRef = AutoDisposeProviderRef; +String _$checkLowUCOInDollarsWarningValueHash() => + r'd8b8a3ec3ff4641a493e38f6e9fb781a1d9c963d'; + +/// Copied from Dart SDK +class _SystemHash { + _SystemHash._(); + + static int combine(int hash, int value) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + value); + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x0007ffff & hash) << 10)); + return hash ^ (hash >> 6); + } + + static int finish(int hash) { + // ignore: parameter_assignments + hash = 0x1fffffff & (hash + ((0x03ffffff & hash) << 3)); + // ignore: parameter_assignments + hash = hash ^ (hash >> 11); + return 0x1fffffff & (hash + ((0x00003fff & hash) << 15)); + } +} + +/// See also [checkLowUCOInDollarsWarningValue]. +@ProviderFor(checkLowUCOInDollarsWarningValue) +const checkLowUCOInDollarsWarningValueProvider = + CheckLowUCOInDollarsWarningValueFamily(); + +/// See also [checkLowUCOInDollarsWarningValue]. +class CheckLowUCOInDollarsWarningValueFamily extends Family { + /// See also [checkLowUCOInDollarsWarningValue]. + const CheckLowUCOInDollarsWarningValueFamily(); + + /// See also [checkLowUCOInDollarsWarningValue]. + CheckLowUCOInDollarsWarningValueProvider call( + double balance, + double amount, + ) { + return CheckLowUCOInDollarsWarningValueProvider( + balance, + amount, + ); + } + + @override + CheckLowUCOInDollarsWarningValueProvider getProviderOverride( + covariant CheckLowUCOInDollarsWarningValueProvider provider, + ) { + return call( + provider.balance, + provider.amount, + ); + } + + static const Iterable? _dependencies = null; + + @override + Iterable? get dependencies => _dependencies; + + static const Iterable? _allTransitiveDependencies = null; + + @override + Iterable? get allTransitiveDependencies => + _allTransitiveDependencies; + + @override + String? get name => r'checkLowUCOInDollarsWarningValueProvider'; +} + +/// See also [checkLowUCOInDollarsWarningValue]. +class CheckLowUCOInDollarsWarningValueProvider + extends AutoDisposeProvider { + /// See also [checkLowUCOInDollarsWarningValue]. + CheckLowUCOInDollarsWarningValueProvider( + double balance, + double amount, + ) : this._internal( + (ref) => checkLowUCOInDollarsWarningValue( + ref as CheckLowUCOInDollarsWarningValueRef, + balance, + amount, + ), + from: checkLowUCOInDollarsWarningValueProvider, + name: r'checkLowUCOInDollarsWarningValueProvider', + debugGetCreateSourceHash: + const bool.fromEnvironment('dart.vm.product') + ? null + : _$checkLowUCOInDollarsWarningValueHash, + dependencies: CheckLowUCOInDollarsWarningValueFamily._dependencies, + allTransitiveDependencies: + CheckLowUCOInDollarsWarningValueFamily._allTransitiveDependencies, + balance: balance, + amount: amount, + ); + + CheckLowUCOInDollarsWarningValueProvider._internal( + super._createNotifier, { + required super.name, + required super.dependencies, + required super.allTransitiveDependencies, + required super.debugGetCreateSourceHash, + required super.from, + required this.balance, + required this.amount, + }) : super.internal(); + + final double balance; + final double amount; + + @override + Override overrideWith( + bool Function(CheckLowUCOInDollarsWarningValueRef provider) create, + ) { + return ProviderOverride( + origin: this, + override: CheckLowUCOInDollarsWarningValueProvider._internal( + (ref) => create(ref as CheckLowUCOInDollarsWarningValueRef), + from: from, + name: null, + dependencies: null, + allTransitiveDependencies: null, + debugGetCreateSourceHash: null, + balance: balance, + amount: amount, + ), + ); + } + + @override + AutoDisposeProviderElement createElement() { + return _CheckLowUCOInDollarsWarningValueProviderElement(this); + } + + @override + bool operator ==(Object other) { + return other is CheckLowUCOInDollarsWarningValueProvider && + other.balance == balance && + other.amount == amount; + } + + @override + int get hashCode { + var hash = _SystemHash.combine(0, runtimeType.hashCode); + hash = _SystemHash.combine(hash, balance.hashCode); + hash = _SystemHash.combine(hash, amount.hashCode); + + return _SystemHash.finish(hash); + } +} + +mixin CheckLowUCOInDollarsWarningValueRef on AutoDisposeProviderRef { + /// The parameter `balance` of this provider. + double get balance; + + /// The parameter `amount` of this provider. + double get amount; +} + +class _CheckLowUCOInDollarsWarningValueProviderElement + extends AutoDisposeProviderElement + with CheckLowUCOInDollarsWarningValueRef { + _CheckLowUCOInDollarsWarningValueProviderElement(super.provider); + + @override + double get balance => + (origin as CheckLowUCOInDollarsWarningValueProvider).balance; + @override + double get amount => + (origin as CheckLowUCOInDollarsWarningValueProvider).amount; +} // ignore_for_file: type=lint // ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member diff --git a/lib/ui/views/liquidity_add/layouts/components/liquidity_add_confirm_sheet.dart b/lib/ui/views/liquidity_add/layouts/components/liquidity_add_confirm_sheet.dart index 2bd80c2a..8c2251e0 100644 --- a/lib/ui/views/liquidity_add/layouts/components/liquidity_add_confirm_sheet.dart +++ b/lib/ui/views/liquidity_add/layouts/components/liquidity_add_confirm_sheet.dart @@ -10,7 +10,6 @@ import 'package:aedex/ui/views/util/components/low_uco_warning_popup.dart'; import 'package:aedex/ui/views/util/consent_uri.dart'; import 'package:archethic_dapp_framework_flutter/archethic_dapp_framework_flutter.dart' as aedappfm; -import 'package:decimal/decimal.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -33,8 +32,6 @@ class LiquidityAddConfirmSheetState if (liquidityAdd.token1 == null) { return const SizedBox.shrink(); } - final lowUCOInDollarsWarningValue = - ref.watch(lowUCOInDollarsWarningValueProvider); return Expanded( child: Column( @@ -83,14 +80,13 @@ class LiquidityAddConfirmSheetState onPressed: () async { if (liquidityAdd.token1 != null && liquidityAdd.token1!.isUCO && - (Decimal.parse( - liquidityAdd.token1Balance.toString(), - ) - - Decimal.parse( - liquidityAdd.token1Amount.toString(), - )) - .toDouble() < - lowUCOInDollarsWarningValue) { + ref.read( + checkLowUCOInDollarsWarningValueProvider( + liquidityAdd.token1Balance, + liquidityAdd.token1Amount, + ), + ) == + false) { final result = await LowUCOWarningPopup.getDialog(context); if (result != null && result == false) { return; @@ -98,14 +94,13 @@ class LiquidityAddConfirmSheetState } if (liquidityAdd.token2 != null && liquidityAdd.token2!.isUCO && - (Decimal.parse( - liquidityAdd.token2Balance.toString(), - ) - - Decimal.parse( - liquidityAdd.token2Amount.toString(), - )) - .toDouble() < - lowUCOInDollarsWarningValue) { + ref.read( + checkLowUCOInDollarsWarningValueProvider( + liquidityAdd.token2Balance, + liquidityAdd.token2Amount, + ), + ) == + false) { if (context.mounted) { final result = await LowUCOWarningPopup.getDialog(context); if (result != null && result == false) { @@ -113,10 +108,9 @@ class LiquidityAddConfirmSheetState } } } - - final liquidityAddNotifier = - ref.read(liquidityAddFormNotifierProvider.notifier); if (context.mounted) { + final liquidityAddNotifier = + ref.read(liquidityAddFormNotifierProvider.notifier); unawaited( liquidityAddNotifier.add(AppLocalizations.of(context)!), ); diff --git a/lib/ui/views/swap/layouts/components/swap_confirm_sheet.dart b/lib/ui/views/swap/layouts/components/swap_confirm_sheet.dart index fce8f5fc..c1f5f264 100644 --- a/lib/ui/views/swap/layouts/components/swap_confirm_sheet.dart +++ b/lib/ui/views/swap/layouts/components/swap_confirm_sheet.dart @@ -11,7 +11,6 @@ import 'package:aedex/ui/views/util/components/low_uco_warning_popup.dart'; import 'package:aedex/ui/views/util/consent_uri.dart'; import 'package:archethic_dapp_framework_flutter/archethic_dapp_framework_flutter.dart' as aedappfm; -import 'package:decimal/decimal.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/localizations.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; @@ -33,9 +32,6 @@ class SwapConfirmSheetState extends ConsumerState { return const SizedBox.shrink(); } - final lowUCOInDollarsWarningValue = - ref.watch(lowUCOInDollarsWarningValueProvider); - return Expanded( child: Column( mainAxisSize: MainAxisSize.min, @@ -83,12 +79,13 @@ class SwapConfirmSheetState extends ConsumerState { onPressed: () async { if (swap.tokenToSwap != null && swap.tokenToSwap!.isUCO && - (Decimal.parse( - swap.tokenToSwapBalance.toString(), - ) - - Decimal.parse(swap.tokenToSwapAmount.toString())) - .toDouble() < - lowUCOInDollarsWarningValue) { + ref.read( + checkLowUCOInDollarsWarningValueProvider( + swap.tokenToSwapBalance, + swap.tokenToSwapAmount, + ), + ) == + false) { final result = await LowUCOWarningPopup.getDialog(context); if (result != null && result == false) { return;