-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathunregister_link_button.dart
75 lines (65 loc) · 2.46 KB
/
unregister_link_button.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import 'package:ew_test_keys/ew_test_keys.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:encointer_wallet/theme/theme.dart';
import 'package:encointer_wallet/utils/alerts/app_alert.dart';
import 'package:encointer_wallet/service/substrate_api/api.dart';
import 'package:encointer_wallet/l10n/l10.dart';
import 'package:encointer_wallet/service/tx/lib/tx.dart';
import 'package:encointer_wallet/store/app.dart';
import 'package:encointer_wallet/models/index.dart';
class UnregisteredLinkButton extends StatefulWidget {
const UnregisteredLinkButton({super.key});
@override
State<UnregisteredLinkButton> createState() => _UnregisteredLinkButtonState();
}
class _UnregisteredLinkButtonState extends State<UnregisteredLinkButton> {
bool _submitting = false;
Future<void> _onPressed() async {
setState(() {
_submitting = true;
});
final store = context.read<AppStore>();
final lastProofOfAttendance = store.encointer.communityAccount?.participantType?.isReputable ?? false
? store.encointer.account
?.lastProofOfAttendance // can still be null if the participant did not register on the same phone.
: null;
await submitUnRegisterParticipant(
context,
store,
webApi,
store.account.getKeyringAccount(store.account.currentAccountPubKey!),
store.encointer.chosenCid!,
lastProofOfAttendance: lastProofOfAttendance,
txPaymentAsset: store.encointer.getTxPaymentAsset(store.encointer.chosenCid),
);
setState(() {
_submitting = false;
});
}
@override
Widget build(BuildContext context) {
final l10n = context.l10n;
return InkWell(
key: const Key(EWTestKeys.unregisterButton),
onTap: () async {
final shouldUnregister = await AppAlert.showConfirmDialog<bool>(
context: context,
onCancel: () => Navigator.pop(context, false),
title: Text(l10n.unregisterDialogTitle, key: const Key(EWTestKeys.unregisterDialog)),
onOK: () => Navigator.pop(context, true),
);
if (shouldUnregister ?? false) {
await _onPressed();
}
},
child: !_submitting
? Text(
l10n.unregister,
style: context.bodyMedium.copyWith(color: AppColors.encointerGrey, decoration: TextDecoration.underline),
)
: const CupertinoActivityIndicator(),
);
}
}