fix: implement async transaction status check in initState
This commit is contained in:
parent
5bc261509a
commit
6b5bcadded
|
@ -6,6 +6,7 @@ import 'package:gecko/models/widgets_keys.dart';
|
||||||
import 'package:gecko/providers/my_wallets.dart';
|
import 'package:gecko/providers/my_wallets.dart';
|
||||||
import 'package:gecko/providers/substrate_sdk.dart';
|
import 'package:gecko/providers/substrate_sdk.dart';
|
||||||
import 'package:gecko/providers/wallets_profiles.dart';
|
import 'package:gecko/providers/wallets_profiles.dart';
|
||||||
|
import 'package:gecko/widgets/commons/loading.dart';
|
||||||
import 'package:gecko/widgets/transaction_status.dart';
|
import 'package:gecko/widgets/transaction_status.dart';
|
||||||
import 'package:gecko/widgets/transaction_status_icon.dart';
|
import 'package:gecko/widgets/transaction_status_icon.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -36,7 +37,7 @@ class _TransactionInProgressState extends State<TransactionInProgress> {
|
||||||
late String toUsernameFormat;
|
late String toUsernameFormat;
|
||||||
late String amount;
|
late String amount;
|
||||||
late bool isUdUnit;
|
late bool isUdUnit;
|
||||||
late TransactionContent txContent;
|
TransactionContent? txContent;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
@ -59,33 +60,49 @@ class _TransactionInProgressState extends State<TransactionInProgress> {
|
||||||
|
|
||||||
amount = walletProfiles.payAmount.text;
|
amount = walletProfiles.payAmount.text;
|
||||||
isUdUnit = configBox.get('isUdUnit') ?? false;
|
isUdUnit = configBox.get('isUdUnit') ?? false;
|
||||||
|
waitForTransactionStatus();
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void waitForTransactionStatus() async {
|
||||||
|
final sub = Provider.of<SubstrateSdk>(context, listen: false);
|
||||||
|
while (!sub.transactionStatus.containsKey(widget.transactionId)) {
|
||||||
|
await Future.delayed(const Duration(seconds: 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
setState(() {
|
||||||
|
txContent = sub.transactionStatus[widget.transactionId]!;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
final sub = Provider.of<SubstrateSdk>(context, listen: true);
|
final sub = Provider.of<SubstrateSdk>(context, listen: true);
|
||||||
|
|
||||||
|
if (txContent == null) {
|
||||||
|
return const Center(child: Loading());
|
||||||
|
}
|
||||||
|
|
||||||
if (sub.transactionStatus.containsKey(widget.transactionId)) {
|
if (sub.transactionStatus.containsKey(widget.transactionId)) {
|
||||||
txContent = sub.transactionStatus[widget.transactionId]!;
|
txContent = sub.transactionStatus[widget.transactionId]!;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (txContent.status == TransactionStatus.success) {
|
if (txContent!.status == TransactionStatus.success) {
|
||||||
resultText = 'extrinsicValidated'
|
resultText = 'extrinsicValidated'
|
||||||
.tr(args: [actionMap[widget.transType] ?? 'strangeTransaction'.tr()]);
|
.tr(args: [actionMap[widget.transType] ?? 'strangeTransaction'.tr()]);
|
||||||
} else if (txContent.status == TransactionStatus.failed) {
|
} else if (txContent!.status == TransactionStatus.failed) {
|
||||||
resultText = errorTransactionMap[txContent.error] ?? txContent.error!;
|
resultText = errorTransactionMap[txContent!.error] ?? txContent!.error!;
|
||||||
} else {
|
} else {
|
||||||
resultText = statusStatusMap[txContent.status] ??
|
resultText = statusStatusMap[txContent!.status] ??
|
||||||
'Unknown status: ${txContent.status}';
|
'Unknown status: ${txContent!.status}';
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildTransactionStatus() {
|
Widget buildTransactionStatus() {
|
||||||
return Column(
|
return Column(
|
||||||
children: [
|
children: [
|
||||||
TransactionStatusIcon(txContent.status),
|
TransactionStatusIcon(txContent!.status),
|
||||||
ScaledSizedBox(height: 7),
|
ScaledSizedBox(height: 7),
|
||||||
if (txContent.status != TransactionStatus.none)
|
if (txContent!.status != TransactionStatus.none)
|
||||||
Text(
|
Text(
|
||||||
resultText,
|
resultText,
|
||||||
textAlign: TextAlign.center,
|
textAlign: TextAlign.center,
|
||||||
|
|
Loading…
Reference in New Issue