Skip to content

Commit

Permalink
fix: Solve different issues of token #2750
Browse files Browse the repository at this point in the history
  • Loading branch information
bibash28 committed Jul 2, 2024
1 parent ebff23f commit 49f7c09
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import 'package:altme/app/app.dart';
import 'package:altme/app/logger/logger.dart';
import 'package:altme/dashboard/dashboard.dart';
import 'package:bloc/bloc.dart';
Expand All @@ -23,21 +24,35 @@ class TokenAmountCalculatorCubit extends Cubit<TokenAmountCalculatorState> {
Decimal validAmount = Decimal.parse('0');
String insertedAmount = '';
try {
if (amount.isEmpty || amount == '0' || amount == '00') {
emit(state.loading());
if (amount.isEmpty) {
validAmount = Decimal.parse('0');
insertedAmount = '';
} else if (amount == '0' || amount == '00') {
validAmount = Decimal.parse('0');
insertedAmount = '0';
} else if (amount.isEmpty || amount == '.') {
} else if (amount == '.') {
validAmount = Decimal.parse('0.');
insertedAmount = '0.';
} else {
insertedAmount = amount.replaceAll(',', '');
final bool isValid =
isValidateAmount(amount: amount, selectedToken: selectedToken);
String trimmedAmount = amount;

// Check if the amount starts with zero(s) but not a decimal number
if (RegExp(r'^0+(\d+)').hasMatch(amount)) {
trimmedAmount = amount.replaceAll(RegExp('^0+'), '');
}

insertedAmount = trimmedAmount.replaceAll(',', '');
final bool isValid = isValidateAmount(
amount: trimmedAmount,
selectedToken: selectedToken,
);
validAmount = isValid
? Decimal.parse(amount.replaceAll(',', ''))
? Decimal.parse(trimmedAmount.replaceAll(',', ''))
: Decimal.parse('0');
}
} catch (e, s) {
emit(state.copyWith(status: AppStatus.idle));
getLogger(runtimeType.toString())
.e('error in calculate amount,e: $e, s: $s');
}
Expand All @@ -56,10 +71,10 @@ class TokenAmountCalculatorCubit extends Cubit<TokenAmountCalculatorState> {
required String? amount,
required TokenModel selectedToken,
}) {
if (amount == null) return false;
if (amount == null || amount.isEmpty) return true;
// true => to avoid error => No balance
try {
final insertedAmount = Decimal.parse(amount.replaceAll(',', ''));
if (insertedAmount <= Decimal.parse('0.0')) return false;
final maxAmount = Decimal.parse(selectedToken.calculatedBalance);
if (insertedAmount > maxAmount) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,27 @@ class TokenAmountCalculatorState extends Equatable {
const TokenAmountCalculatorState({
this.validAmount = '0',
this.insertedAmount = '',
this.status = AppStatus.idle,
});

factory TokenAmountCalculatorState.fromJson(Map<String, dynamic> json) =>
_$TokenAmountCalculatorStateFromJson(json);

final String validAmount;
final String insertedAmount;
final AppStatus status;

TokenAmountCalculatorState loading() {
return copyWith(status: AppStatus.loading);
}

TokenAmountCalculatorState copyWith({
AppStatus status = AppStatus.idle,
String? validAmount,
String? insertedAmount,
}) {
return TokenAmountCalculatorState(
status: status,
insertedAmount: insertedAmount ?? this.insertedAmount,
validAmount: validAmount ?? this.validAmount,
);
Expand All @@ -27,6 +35,7 @@ class TokenAmountCalculatorState extends Equatable {

@override
List<Object?> get props => [
status,
validAmount,
insertedAmount,
];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import 'dart:io';
import 'package:altme/app/app.dart';
import 'package:altme/dashboard/dashboard.dart';
import 'package:altme/l10n/l10n.dart';
import 'package:decimal/decimal.dart';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Expand Down Expand Up @@ -57,6 +58,12 @@ class _TokenAmountCalculatorPageState extends State<TokenAmountCalculatorPage> {
Future<void> _onPaste(TextSelectionDelegate value) async {
final ClipboardData? data = await Clipboard.getData(Clipboard.kTextPlain);
final text = data?.text ?? '';

final isValidAmount = Decimal.tryParse(text);
if (isValidAmount == null) {
return;
}

if (text.isEmpty) {
return;
} else {
Expand Down

0 comments on commit 49f7c09

Please sign in to comment.