Skip to content
Snippets Groups Projects
Commit 3ec18ba0 authored by poka's avatar poka
Browse files

refacto: TransactionStatus enum and status is nullable

parent bde2b0cb
No related branches found
No related tags found
No related merge requests found
Pipeline #34529 waiting for manual action
...@@ -37,7 +37,7 @@ class SubstrateSdk with ChangeNotifier { ...@@ -37,7 +37,7 @@ class SubstrateSdk with ChangeNotifier {
bool importIsLoading = false; bool importIsLoading = false;
int blocNumber = 0; int blocNumber = 0;
bool isLoadingEndpoint = false; bool isLoadingEndpoint = false;
String transactionStatus = ''; String? transactionStatus;
final int initSs58 = 42; final int initSs58 = 42;
Map<String, int> currencyParameters = {}; Map<String, int> currencyParameters = {};
TextEditingController csSalt = TextEditingController(); TextEditingController csSalt = TextEditingController();
...@@ -908,7 +908,7 @@ class SubstrateSdk with ChangeNotifier { ...@@ -908,7 +908,7 @@ class SubstrateSdk with ChangeNotifier {
required String destAddress, required String destAddress,
required double amount, required double amount,
required String password}) async { required String password}) async {
transactionStatus = ''; transactionStatus = 'sending';
final sender = await _setSender(fromAddress); final sender = await _setSender(fromAddress);
...@@ -960,7 +960,7 @@ class SubstrateSdk with ChangeNotifier { ...@@ -960,7 +960,7 @@ class SubstrateSdk with ChangeNotifier {
Future<String> certify( Future<String> certify(
String fromAddress, String destAddress, String password) async { String fromAddress, String destAddress, String password) async {
transactionStatus = ''; transactionStatus = 'sending';
final statusList = await idtyStatus([fromAddress, destAddress]); final statusList = await idtyStatus([fromAddress, destAddress]);
final myIdtyStatus = statusList[0]; final myIdtyStatus = statusList[0];
...@@ -1028,6 +1028,7 @@ class SubstrateSdk with ChangeNotifier { ...@@ -1028,6 +1028,7 @@ class SubstrateSdk with ChangeNotifier {
Future<String> confirmIdentity( Future<String> confirmIdentity(
String fromAddress, String name, String password) async { String fromAddress, String name, String password) async {
transactionStatus = 'sending';
final sender = await _setSender(fromAddress); final sender = await _setSender(fromAddress);
final txInfo = TxInfoData( final txInfo = TxInfoData(
...@@ -1047,7 +1048,7 @@ class SubstrateSdk with ChangeNotifier { ...@@ -1047,7 +1048,7 @@ class SubstrateSdk with ChangeNotifier {
required String destPassword, required String destPassword,
required Map fromBalance, required Map fromBalance,
bool withBalance = false}) async { bool withBalance = false}) async {
transactionStatus = ''; transactionStatus = 'sending';
final sender = await _setSender(fromAddress); final sender = await _setSender(fromAddress);
TxInfoData txInfo; TxInfoData txInfo;
......
...@@ -27,8 +27,7 @@ class TransactionInProgress extends StatelessWidget { ...@@ -27,8 +27,7 @@ class TransactionInProgress extends StatelessWidget {
Provider.of<WalletsProfilesProvider>(context, listen: false); Provider.of<WalletsProfilesProvider>(context, listen: false);
final myWalletProvider = final myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false); Provider.of<MyWalletsProvider>(context, listen: false);
bool isValid = false; var txStatus = TransactionStatus.nothing;
bool isLoading = false;
final result = sub.transactionStatus; final result = sub.transactionStatus;
final from = fromAddress ?? final from = fromAddress ??
...@@ -54,7 +53,7 @@ class TransactionInProgress extends StatelessWidget { ...@@ -54,7 +53,7 @@ class TransactionInProgress extends StatelessWidget {
String resultText = ''; String resultText = '';
final Map<String, String> resultMap = { final Map<String, String> resultMap = {
'': 'sending'.tr(), 'sending': 'sending'.tr(),
'Ready': 'propagating'.tr(), 'Ready': 'propagating'.tr(),
'Broadcast': 'validating'.tr(), 'Broadcast': 'validating'.tr(),
'cert.NotRespectCertPeriod': '24hbetweenCerts'.tr(), 'cert.NotRespectCertPeriod': '24hbetweenCerts'.tr(),
...@@ -68,18 +67,21 @@ class TransactionInProgress extends StatelessWidget { ...@@ -68,18 +67,21 @@ class TransactionInProgress extends StatelessWidget {
'Exception: timeout': 'execTimeoutOver'.tr(), 'Exception: timeout': 'execTimeoutOver'.tr(),
}; };
if (result.contains('blockHash: ')) { if (result == null) {
isValid = true; txStatus = TransactionStatus.nothing;
} else if (result.contains('blockHash: ')) {
txStatus = TransactionStatus.success;
resultText = 'extrinsicValidated' resultText = 'extrinsicValidated'
.tr(args: [actionMap[transType] ?? 'strangeTransaction'.tr()]); .tr(args: [actionMap[transType] ?? 'strangeTransaction'.tr()]);
log.i('Bloc of last transaction: ${sub.blocNumber} --- $result'); log.i('Bloc of last transaction: ${sub.blocNumber} --- $result');
} else if (result.contains('Exception: ')) { } else if (result.contains('Exception: ')) {
txStatus = TransactionStatus.failed;
resultText = "${"anErrorOccurred".tr()}:\n"; resultText = "${"anErrorOccurred".tr()}:\n";
final String exception = result.split('Exception: ')[1]; final String exception = result.split('Exception: ')[1];
resultText = resultMap[exception] ?? "$resultText\n$exception"; resultText = resultMap[exception] ?? "$resultText\n$exception";
log.d('Error: $exception'); log.d('Error: $exception');
} else { } else {
isLoading = true; txStatus = TransactionStatus.loading;
resultText = resultMap[result] ?? 'unknown status...'; resultText = resultMap[result] ?? 'unknown status...';
} }
...@@ -87,7 +89,7 @@ class TransactionInProgress extends StatelessWidget { ...@@ -87,7 +89,7 @@ class TransactionInProgress extends StatelessWidget {
return PopScope( return PopScope(
onPopInvoked: (_) { onPopInvoked: (_) {
sub.transactionStatus = ''; sub.transactionStatus = null;
}, },
child: Scaffold( child: Scaffold(
backgroundColor: backgroundColor, backgroundColor: backgroundColor,
...@@ -162,7 +164,7 @@ class TransactionInProgress extends StatelessWidget { ...@@ -162,7 +164,7 @@ class TransactionInProgress extends StatelessWidget {
const Spacer(), const Spacer(),
Column(children: [ Column(children: [
Visibility( Visibility(
visible: isLoading, visible: txStatus == TransactionStatus.loading,
child: const SizedBox( child: const SizedBox(
height: 18, height: 18,
width: 18, width: 18,
...@@ -173,19 +175,30 @@ class TransactionInProgress extends StatelessWidget { ...@@ -173,19 +175,30 @@ class TransactionInProgress extends StatelessWidget {
), ),
), ),
Visibility( Visibility(
visible: !isLoading, visible: txStatus == TransactionStatus.success,
child: Icon( child: const Icon(
isValid ? Icons.done_all : Icons.close, Icons.done_all,
size: 35, size: 35,
color: isValid ? Colors.greenAccent : Colors.redAccent, color: Colors.greenAccent,
),
),
Visibility(
visible: txStatus == TransactionStatus.failed,
child: const Icon(
Icons.close,
size: 35,
color: Colors.redAccent,
), ),
), ),
const SizedBox(height: 10), const SizedBox(height: 10),
Text( Visibility(
visible: txStatus != TransactionStatus.nothing,
child: Text(
resultText, resultText,
textAlign: TextAlign.center, textAlign: TextAlign.center,
style: TextStyle(fontSize: 19 * ratio), style: TextStyle(fontSize: 19 * ratio),
), ),
),
]), ]),
const Spacer(), const Spacer(),
Expanded( Expanded(
...@@ -201,7 +214,7 @@ class TransactionInProgress extends StatelessWidget { ...@@ -201,7 +214,7 @@ class TransactionInProgress extends StatelessWidget {
backgroundColor: orangeC, // foreground backgroundColor: orangeC, // foreground
), ),
onPressed: () { onPressed: () {
sub.transactionStatus = ''; sub.transactionStatus = null;
Navigator.pop(context); Navigator.pop(context);
}, },
child: Text( child: Text(
...@@ -221,3 +234,5 @@ class TransactionInProgress extends StatelessWidget { ...@@ -221,3 +234,5 @@ class TransactionInProgress extends StatelessWidget {
); );
} }
} }
enum TransactionStatus { loading, failed, success, nothing }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment