V4.6.4 fixes (#904)
* Check if context is still mounted or not before showing popup * - Refactor Restore route flow - Fix Monero.com restore from QR - Remove deprecated restore classes - Update Monero.com app version and notes * Update Macos version and release notes * Fixate android plugin versions as Flutter published new fail packages version * Revert desktop changes as it's not supported yet to scan QR code on Desktop [skip ci] * Revert macos version update [skip ci]
Omar Hatem committed
Apr 27, 2023 at 17:06 UTC
367efb3caed487ed10a3fe7b27ff568a00cf0c70
12 files changed
+62
-524
assets/text/Monerocom_Release_Notes.txt
+1
-4
@@ -1,4 +1 @@
1
-Fix for QR codes
2
-Fix for creating sub-addresses
3
-Fix Add/Edit nodes
4
-Fix issues with text/amount fields
\ No newline at end of file
1
+Fix Restore from QR code
\ No newline at end of file
lib/router.dart
+29
-72
@@ -41,17 +41,14 @@ import 'package:cake_wallet/view_model/dashboard/dashboard_view_model.dart';
41
import 'package:cake_wallet/view_model/monero_account_list/account_list_item.dart';
42
import 'package:cake_wallet/view_model/node_list/node_create_or_edit_view_model.dart';
43
import 'package:cake_wallet/view_model/advanced_privacy_settings_view_model.dart';
44
-import 'package:cake_wallet/view_model/restore/restore_from_qr_vm.dart';
45
-import 'package:cake_wallet/view_model/restore/restore_wallet.dart';
44
+import 'package:cake_wallet/wallet_type_utils.dart';
45
import 'package:flutter/cupertino.dart';
46
import 'package:flutter/material.dart';
47
import 'package:cake_wallet/routes.dart';
48
import 'package:cake_wallet/generated/i18n.dart';
49
import 'package:cake_wallet/di.dart';
51
-import 'package:cake_wallet/utils/language_list.dart';
50
import 'package:cake_wallet/view_model/wallet_new_vm.dart';
51
import 'package:cake_wallet/view_model/wallet_restoration_from_seed_vm.dart';
54
-import 'package:cake_wallet/view_model/wallet_restoration_from_keys_vm.dart';
52
import 'package:cake_wallet/exchange/trade.dart';
53
import 'package:cw_core/transaction_info.dart';
54
import 'package:cw_core/wallet_type.dart';
@@ -65,9 +62,6 @@ import 'package:cake_wallet/src/screens/wallet_list/wallet_list_page.dart';
62
import 'package:cake_wallet/src/screens/new_wallet/new_wallet_page.dart';
63
import 'package:cake_wallet/src/screens/setup_pin_code/setup_pin_code.dart';
64
import 'package:cake_wallet/src/screens/restore/restore_options_page.dart';
68
-import 'package:cake_wallet/src/screens/restore/restore_wallet_options_page.dart';
69
-import 'package:cake_wallet/src/screens/restore/restore_wallet_from_seed_page.dart';
70
-import 'package:cake_wallet/src/screens/restore/restore_wallet_from_keys_page.dart';
65
import 'package:cake_wallet/src/screens/send/send_page.dart';
66
import 'package:cake_wallet/src/screens/disclaimer/disclaimer_page.dart';
67
import 'package:cake_wallet/src/screens/seed_language/seed_language_page.dart';
@@ -144,14 +138,6 @@ Route<dynamic> createRoute(RouteSettings settings) {
138
return CupertinoPageRoute<void>(
139
builder: (_) => getIt.get<SetupPinCodePage>(param1: callback));
140
147
- case Routes.moneroRestoreWalletFromWelcome:
148
- return CupertinoPageRoute<void>(
149
- builder: (_) => getIt.get<SetupPinCodePage>(
150
- param1: (PinCodeState<PinCodeWidget> context, dynamic _) =>
151
- Navigator.pushNamed(
152
- context.context, Routes.restoreWallet, arguments: WalletType.monero)),
153
- fullscreenDialog: true);
154
-
141
case Routes.restoreWalletType:
142
return CupertinoPageRoute<void>(
143
builder: (_) => getIt.get<NewWalletTypePage>(
@@ -165,46 +151,35 @@ Route<dynamic> createRoute(RouteSettings settings) {
151
return CupertinoPageRoute<void>(
152
builder: (_) => getIt.get<RestoreOptionsPage>(param1: isNewInstall));
153
168
- case Routes.restoreWalletOptions:
169
- final type = WalletType.monero; //settings.arguments as WalletType;
170
-
171
- return CupertinoPageRoute<void>(
172
- builder: (_) => RestoreWalletOptionsPage(
173
- type: type,
174
- onRestoreFromSeed: (context) {
175
- final route = type == WalletType.monero
176
- ? Routes.seedLanguage
177
- : Routes.restoreWalletFromSeed;
178
- final args = type == WalletType.monero
179
- ? [type, Routes.restoreWalletFromSeed]
180
- : [type];
181
-
182
- Navigator.of(context).pushNamed(route, arguments: args);
183
- },
184
- onRestoreFromKeys: (context) {
185
- final route = type == WalletType.monero
186
- ? Routes.seedLanguage
187
- : Routes.restoreWalletFromKeys;
188
- final args = type == WalletType.monero
189
- ? [type, Routes.restoreWalletFromKeys]
190
- : [type];
191
-
192
- Navigator.of(context).pushNamed(route, arguments: args);
193
- }));
194
-
195
- case Routes.restoreWalletOptionsFromWelcome:
154
+ case Routes.restoreWalletFromSeedKeys:
155
final isNewInstall = settings.arguments as bool;
197
- return isNewInstall ? CupertinoPageRoute<void>(
198
- builder: (_) => getIt.get<SetupPinCodePage>(
199
- param1: (PinCodeState<PinCodeWidget> context, dynamic _) =>
200
- Navigator.pushNamed(
201
- context.context, Routes.restoreWalletType)),
202
- fullscreenDialog: true) : CupertinoPageRoute<void>(
203
- builder: (_) => getIt.get<NewWalletTypePage>(
204
- param1: (BuildContext context, WalletType type) =>
205
- Navigator.of(context)
206
- .pushNamed(Routes.restoreWallet, arguments: type),
207
- param2: false));
156
+
157
+ if (isNewInstall) {
158
+ return CupertinoPageRoute<void>(
159
+ builder: (_) => getIt.get<SetupPinCodePage>(
160
+ param1: (PinCodeState<PinCodeWidget> context, dynamic _) {
161
+ if (isSingleCoin) {
162
+ return Navigator.of(context.context)
163
+ .pushNamed(Routes.restoreWallet, arguments: availableWalletTypes.first);
164
+ }
165
+
166
+ return Navigator.pushNamed(
167
+ context.context, Routes.restoreWalletType);
168
+ }),
169
+ fullscreenDialog: true);
170
+ } else if (isSingleCoin) {
171
+ return MaterialPageRoute<void>(
172
+ builder: (_) => getIt.get<WalletRestorePage>(
173
+ param1: availableWalletTypes.first
174
+ ));
175
+ } else {
176
+ return CupertinoPageRoute<void>(
177
+ builder: (_) => getIt.get<NewWalletTypePage>(
178
+ param1: (BuildContext context, WalletType type) =>
179
+ Navigator.of(context)
180
+ .pushNamed(Routes.restoreWallet, arguments: type),
181
+ param2: false));
182
+ }
183
184
case Routes.seed:
185
return MaterialPageRoute<void>(
@@ -216,24 +191,6 @@ Route<dynamic> createRoute(RouteSettings settings) {
191
builder: (_) => getIt.get<WalletRestorePage>(
192
param1: settings.arguments as WalletType));
193
219
- case Routes.restoreWalletFromSeed:
220
- final type = settings.arguments as WalletType;
221
- return CupertinoPageRoute<void>(
222
- builder: (_) => RestoreWalletFromSeedPage(type: type));
223
-
224
- case Routes.restoreWalletFromKeys:
225
- final args = settings.arguments as List<dynamic>;
226
- final type = args.first as WalletType;
227
- final language =
228
- type == WalletType.monero ? args[1] as String : LanguageList.english;
229
-
230
- final walletRestorationFromKeysVM =
231
- getIt.get<WalletRestorationFromKeysVM>(param1: [type, language]);
232
-
233
- return CupertinoPageRoute<void>(
234
- builder: (_) => RestoreWalletFromKeysPage(
235
- walletRestorationFromKeysVM: walletRestorationFromKeysVM));
236
-
194
case Routes.sweepingWalletPage:
195
return CupertinoPageRoute<void>(
196
builder: (_) => getIt.get<SweepingWalletPage>());
lib/routes.dart
+1
-8
@@ -3,14 +3,9 @@ class Routes {
3
static const newWallet = '/new_wallet';
4
static const setupPin = '/setup_pin_code';
5
static const newWalletFromWelcome = '/new_wallet_from_welcome';
6
- static const restoreFromWelcome = '/restore_from_welcome';
6
static const seed = '/seed';
7
static const restoreOptions = '/restore_options';
9
- static const restoreOptionsFromWelcome = '/restore_options_from_welcome';
10
- static const restoreWalletOptions = '/restore_seed_keys';
11
- static const restoreWalletOptionsFromWelcome = '/restore_wallet_options_from_welcome';
12
- static const restoreWalletFromSeed = '/restore_wallet_from_seed';
13
- static const restoreWalletFromKeys = '/restore_wallet_from_keys';
8
+ static const restoreWalletFromSeedKeys = '/restore_wallet_from_seeds_keys';
9
static const dashboard = '/dashboard';
10
static const send = '/send';
11
static const transactionDetails = '/transaction_info';
@@ -57,8 +52,6 @@ class Routes {
52
static const buyWebView = '/buy_web_view';
53
static const unspentCoinsList = '/unspent_coins_list';
54
static const unspentCoinsDetails = '/unspent_coins_details';
60
- static const moneroRestoreWalletFromWelcome = '/monero_restore_wallet';
61
- static const moneroNewWalletFromWelcome = '/monero_new_wallet';
55
static const addressPage = '/address_page';
56
static const fullscreenQR = '/fullscreen_qr';
57
static const ioniaWelcomePage = '/cake_pay_welcome_page';
lib/src/screens/dashboard/desktop_widgets/desktop_wallet_selection_dropdown.dart
-1
@@ -1,6 +1,5 @@
1
import 'package:another_flushbar/flushbar.dart';
2
import 'package:cake_wallet/core/auth_service.dart';
3
-import 'package:cake_wallet/di.dart';
3
import 'package:cake_wallet/entities/desktop_dropdown_item.dart';
4
import 'package:cake_wallet/generated/i18n.dart';
5
import 'package:cake_wallet/routes.dart';
lib/src/screens/restore/restore_options_page.dart
+2
-1
@@ -7,6 +7,7 @@ import 'package:cake_wallet/utils/show_pop_up.dart';
7
import 'package:cake_wallet/view_model/restore/restore_from_qr_vm.dart';
8
import 'package:cake_wallet/view_model/restore/wallet_restore_from_qr_code.dart';
9
import 'package:cake_wallet/utils/responsive_layout_util.dart';
10
+import 'package:cake_wallet/wallet_type_utils.dart';
11
import 'package:flutter/material.dart';
12
import 'package:cake_wallet/routes.dart';
13
import 'package:flutter/cupertino.dart';
@@ -38,7 +39,7 @@ class RestoreOptionsPage extends BasePage {
39
children: <Widget>[
40
RestoreButton(
41
onPressed: () => Navigator.pushNamed(
41
- context, Routes.restoreWalletOptionsFromWelcome,
42
+ context, Routes.restoreWalletFromSeedKeys,
43
arguments: isNewInstall),
44
image: imageSeedKeys,
45
title: S.of(context).restore_title_from_seed_keys,
lib/src/screens/restore/restore_wallet_from_keys_page.dart
deleted
-212
@@ -1,212 +0,0 @@
1
-import 'package:cake_wallet/core/wallet_name_validator.dart';
2
-import 'package:cake_wallet/palette.dart';
3
-import 'package:flutter/services.dart';
4
-import 'package:flutter/cupertino.dart';
5
-import 'package:flutter/material.dart';
6
-import 'package:flutter_mobx/flutter_mobx.dart';
7
-import 'package:cake_wallet/generated/i18n.dart';
8
-import 'package:cake_wallet/src/screens/base_page.dart';
9
-import 'package:cake_wallet/src/widgets/primary_button.dart';
10
-import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
11
-import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
12
-import 'package:cake_wallet/src/widgets/alert_with_one_action.dart';
13
-import 'package:cake_wallet/view_model/wallet_restoration_from_keys_vm.dart';
14
-import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
15
-
16
-class RestoreWalletFromKeysPage extends BasePage {
17
- RestoreWalletFromKeysPage(
18
- {required this.walletRestorationFromKeysVM});
19
-
20
- final WalletRestorationFromKeysVM walletRestorationFromKeysVM;
21
-
22
- @override
23
- String get title => S.current.restore_title_from_keys;
24
-
25
- @override
26
- Widget body(BuildContext context) => RestoreFromKeysFrom(walletRestorationFromKeysVM);
27
-}
28
-
29
-class RestoreFromKeysFrom extends StatefulWidget {
30
- RestoreFromKeysFrom(this.walletRestorationFromKeysVM);
31
-
32
- final WalletRestorationFromKeysVM walletRestorationFromKeysVM;
33
-
34
- @override
35
- _RestoreFromKeysFromState createState() => _RestoreFromKeysFromState();
36
-}
37
-
38
-class _RestoreFromKeysFromState extends State<RestoreFromKeysFrom> {
39
- final _formKey = GlobalKey<FormState>();
40
- final _blockchainHeightKey = GlobalKey<BlockchainHeightState>();
41
- final _nameController = TextEditingController();
42
- final _addressController = TextEditingController();
43
- final _viewKeyController = TextEditingController();
44
- final _spendKeyController = TextEditingController();
45
- final _wifController = TextEditingController();
46
-
47
- @override
48
- void initState() {
49
- _nameController.addListener(() =>
50
- widget.walletRestorationFromKeysVM.name = _nameController.text);
51
- _addressController.addListener(() =>
52
- widget.walletRestorationFromKeysVM.address = _addressController.text);
53
- _viewKeyController.addListener(() =>
54
- widget.walletRestorationFromKeysVM.viewKey = _viewKeyController.text);
55
- _spendKeyController.addListener(() =>
56
- widget.walletRestorationFromKeysVM.spendKey = _spendKeyController.text);
57
- _wifController.addListener(() =>
58
- widget.walletRestorationFromKeysVM.wif = _wifController.text);
59
-
60
- super.initState();
61
- }
62
-
63
- @override
64
- void dispose() {
65
- _nameController.dispose();
66
- _addressController.dispose();
67
- _viewKeyController.dispose();
68
- _spendKeyController.dispose();
69
- _wifController.dispose();
70
- super.dispose();
71
- }
72
-
73
- @override
74
- Widget build(BuildContext context) {
75
-
76
- /*reaction((_) => walletRestorationStore.state, (WalletRestorationState state) {
77
- if (state is WalletRestoredSuccessfully) {
78
- Navigator.of(context).popUntil((route) => route.isFirst);
79
- }
80
-
81
- if (state is WalletRestorationFailure) {
82
- WidgetsBinding.instance.addPostFrameCallback((_) {
83
- showPopUp<void>(
84
- context: context,
85
- builder: (BuildContext context) {
86
- return AlertWithOneAction(
87
- alertTitle: S.current.restore_title_from_keys,
88
- alertContent: state.error,
89
- buttonText: S.of(context).ok,
90
- buttonAction: () => Navigator.of(context).pop()
91
- );
92
- });
93
- });
94
- }
95
- });*/
96
-
97
- return Container(
98
- padding: EdgeInsets.only(left: 24, right: 24),
99
- child: ScrollableWithBottomSection(
100
- contentPadding: EdgeInsets.only(bottom: 24.0),
101
- content: Form(
102
- key: _formKey,
103
- child: Column(children: <Widget>[
104
- Row(
105
- children: <Widget>[
106
- Flexible(
107
- child: Container(
108
- padding: EdgeInsets.only(top: 20.0),
109
- child: BaseTextFormField(
110
- controller: _nameController,
111
- hintText: S.of(context).restore_wallet_name,
112
- validator: WalletNameValidator(),
113
- )
114
- ))
115
- ],
116
- ),
117
- if (!widget.walletRestorationFromKeysVM.hasRestorationHeight)
118
- Row(
119
- children: <Widget>[
120
- Flexible(
121
- child: Container(
122
- padding: EdgeInsets.only(top: 20.0),
123
- child: BaseTextFormField(
124
- controller: _wifController,
125
- hintText: 'WIF',
126
- )
127
- ))
128
- ],
129
- ),
130
- if (widget.walletRestorationFromKeysVM.hasRestorationHeight) ... [
131
- Row(
132
- children: <Widget>[
133
- Flexible(
134
- child: Container(
135
- padding: EdgeInsets.only(top: 20.0),
136
- child: BaseTextFormField(
137
- controller: _addressController,
138
- keyboardType: TextInputType.multiline,
139
- maxLines: null,
140
- hintText: S.of(context).restore_address,
141
- )
142
- ))
143
- ],
144
- ),
145
- Row(
146
- children: <Widget>[
147
- Flexible(
148
- child: Container(
149
- padding: EdgeInsets.only(top: 20.0),
150
- child: BaseTextFormField(
151
- controller: _viewKeyController,
152
- hintText: S.of(context).restore_view_key_private,
153
- )
154
- ))
155
- ],
156
- ),
157
- Row(
158
- children: <Widget>[
159
- Flexible(
160
- child: Container(
161
- padding: EdgeInsets.only(top: 20.0),
162
- child: BaseTextFormField(
163
- controller: _spendKeyController,
164
- hintText: S.of(context).restore_spend_key_private,
165
- )
166
- ))
167
- ],
168
- ),
169
- BlockchainHeightWidget(
170
- key: _blockchainHeightKey,
171
- onHeightChange: (height) {
172
- widget.walletRestorationFromKeysVM.height = height;
173
- print(height);
174
- }),
175
- Padding(
176
- padding: EdgeInsets.only(left: 40, right: 40, top: 24),
177
- child: Text(
178
- S.of(context).restore_from_date_or_blockheight,
179
- textAlign: TextAlign.center,
180
- style: TextStyle(
181
- fontSize: 12,
182
- fontWeight: FontWeight.normal,
183
- color: Theme.of(context).hintColor
184
- ),
185
- ),
186
- )],
187
- ]),
188
- ),
189
- bottomSectionPadding: EdgeInsets.only(bottom: 24),
190
- bottomSection: Observer(builder: (_) {
191
- return LoadingPrimaryButton(
192
- onPressed: () {
193
- if (_formKey.currentState != null && _formKey.currentState!.validate()) {
194
- /*walletRestorationStore.restoreFromKeys(
195
- name: _nameController.text,
196
- language: seedLanguageStore.selectedSeedLanguage,
197
- address: _addressController.text,
198
- viewKey: _viewKeyController.text,
199
- spendKey: _spendKeyController.text,
200
- restoreHeight: _blockchainHeightKey.currentState.height);*/
201
- }
202
- },
203
- text: S.of(context).restore_recover,
204
- color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
205
- textColor: Colors.white,
206
- //isDisabled: walletRestorationStore.disabledState,
207
- );
208
- }),
209
- ),
210
- );
211
- }
212
-}
lib/src/screens/restore/restore_wallet_from_seed_page.dart
deleted
-199
@@ -1,199 +0,0 @@
1
-import 'package:cake_wallet/src/screens/restore/restore_from_keys.dart';
2
-import 'package:cake_wallet/src/screens/restore/wallet_restore_from_seed_form.dart';
3
-import 'package:cake_wallet/src/screens/seed_language/widgets/seed_language_picker.dart';
4
-import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
5
-import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
6
-import 'package:cake_wallet/src/widgets/primary_button.dart';
7
-import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
8
-import 'package:cake_wallet/utils/show_pop_up.dart';
9
-import 'package:flutter/cupertino.dart';
10
-import 'package:flutter/material.dart';
11
-import 'package:flutter/services.dart';
12
-import 'package:cake_wallet/routes.dart';
13
-import 'package:cake_wallet/generated/i18n.dart';
14
-import 'package:cake_wallet/src/screens/base_page.dart';
15
-import 'package:cake_wallet/src/widgets/seed_widget.dart';
16
-import 'package:cw_core/wallet_type.dart';
17
-import 'package:cake_wallet/core/seed_validator.dart';
18
-import 'package:cake_wallet/core/mnemonic_length.dart';
19
-import 'package:smooth_page_indicator/smooth_page_indicator.dart';
20
-
21
-class RestoreWalletFromSeedPage extends BasePage {
22
- RestoreWalletFromSeedPage({required this.type})
23
- : _pages = <Widget>[];
24
-
25
- final WalletType type;
26
- final String language = 'en';
27
-
28
- // final formKey = GlobalKey<_RestoreFromSeedFormState>();
29
- // final formKey = GlobalKey<_RestoreFromSeedFormState>();
30
-
31
- @override
32
- String get title => S.current.restore_title_from_seed;
33
-
34
- final controller = PageController(initialPage: 0);
35
- List<Widget> _pages;
36
-
37
- Widget _page(BuildContext context, int index) {
38
- if (_pages == null || _pages.isEmpty) {
39
- _setPages(context);
40
- }
41
-
42
- return _pages[index];
43
- }
44
-
45
- int _pageLength(BuildContext context) {
46
- if (_pages == null || _pages.isEmpty) {
47
- _setPages(context);
48
- }
49
-
50
- return _pages.length;
51
- }
52
-
53
- void _setPages(BuildContext context) {
54
- _pages = <Widget>[
55
- // FIX-ME: Added args (displayBlockHeightSelector: true, displayLanguageSelector: true, type: type)
56
- WalletRestoreFromSeedForm(displayBlockHeightSelector: true, displayLanguageSelector: true, type: type),
57
- RestoreFromKeysFrom(),
58
- ];
59
- }
60
-
61
- @override
62
- Widget body(BuildContext context) {
63
- return Column(mainAxisAlignment: MainAxisAlignment.center, children: [
64
- Expanded(
65
- child: PageView.builder(
66
- onPageChanged: (page) {
67
- print('Page index $page');
68
- },
69
- controller: controller,
70
- itemCount: _pageLength(context),
71
- itemBuilder: (context, index) => _page(context, index))),
72
- Padding(
73
- padding: EdgeInsets.only(top: 10),
74
- child: SmoothPageIndicator(
75
- controller: controller,
76
- count: _pageLength(context),
77
- effect: ColorTransitionEffect(
78
- spacing: 6.0,
79
- radius: 6.0,
80
- dotWidth: 6.0,
81
- dotHeight: 6.0,
82
- dotColor: Theme.of(context).hintColor.withOpacity(0.5),
83
- activeDotColor: Theme.of(context).hintColor),
84
- )),
85
- Padding(
86
- padding: EdgeInsets.only(top: 20, bottom: 24, left: 24, right: 24),
87
- child: PrimaryButton(
88
- text: S.of(context).restore_recover,
89
- isDisabled: false,
90
- onPressed: () => null,
91
- color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
92
- textColor: Colors.white)),
93
- ]);
94
-
95
- // return GestureDetector(
96
- // onTap: () =>
97
- // SystemChannels.textInput.invokeMethod<void>('TextInput.hide'),
98
- // child: ScrollableWithBottomSection(
99
- // bottomSection: Column(children: [
100
- // GestureDetector(
101
- // onTap: () {},
102
- // child: Text('Switch to restore from keys',
103
- // style: TextStyle(fontSize: 15, color: Theme.of(context).hintColor))),
104
- // SizedBox(height: 30),
105
- // PrimaryButton(
106
- // text: S.of(context).restore_next,
107
- // isDisabled: false,
108
- // onPressed: () => null,
109
- // color: Theme.of(context).accentTextTheme!.bodyText1!.color!,
110
- // textColor: Colors.white)
111
- // ]),
112
- // contentPadding: EdgeInsets.only(bottom: 24),
113
- // content: Container(
114
- // padding: EdgeInsets.only(left: 25, right: 25),
115
- // child: Column(children: [
116
- // SeedWidget(
117
- // maxLength: mnemonicLength(type),
118
- // onMnemonicChange: (seed) => null,
119
- // onFinish: () => Navigator.of(context).pushNamed(
120
- // Routes.restoreWalletFromSeedDetails,
121
- // arguments: [type, language, '']),
122
- // validator: SeedValidator(type: type, language: language),
123
- // ),
124
- // // SizedBox(height: 15),
125
- // // BaseTextFormField(hintText: 'Language', initialValue: 'English'),
126
- // BlockchainHeightWidget(
127
- // // key: _blockchainHeightKey,
128
- // onHeightChange: (height) {
129
- // // widget.walletRestorationFromKeysVM.height = height;
130
- // print(height);
131
- // })
132
- // ]))),
133
- // );
134
- }
135
-}
136
-
137
-class RestoreFromSeedForm extends StatefulWidget {
138
- RestoreFromSeedForm(
139
- {Key? key,
140
- required this.type,
141
- this.language,
142
- this.leading,
143
- this.middle})
144
- : super(key: key);
145
- final WalletType type;
146
- final String? language;
147
- final Widget? leading;
148
- final Widget? middle;
149
-
150
- @override
151
- _RestoreFromSeedFormState createState() => _RestoreFromSeedFormState();
152
-}
153
-
154
-class _RestoreFromSeedFormState extends State<RestoreFromSeedForm> {
155
- // final _seedKey = GlobalKey<SeedWidgetState>();
156
-
157
- String mnemonic() =>
158
- ''; // _seedKey.currentState.items.map((e) => e.text).join(' ');
159
-
160
- @override
161
- Widget build(BuildContext context) {
162
- return GestureDetector(
163
- onTap: () =>
164
- SystemChannels.textInput.invokeMethod<void>('TextInput.hide'),
165
- child: Container(
166
- padding: EdgeInsets.only(left: 24, right: 24),
167
- // color: Colors.blue,
168
- // height: 300,
169
- child: Column(children: [
170
- SeedWidget(
171
- type: widget.type,
172
- language: widget.language ?? '',
173
- // key: _seedKey,
174
- // maxLength: mnemonicLength(widget.type),
175
- // onMnemonicChange: (seed) => null,
176
- // onFinish: () => Navigator.of(context).pushNamed(
177
- // Routes.restoreWalletFromSeedDetails,
178
- // arguments: [widget.type, widget.language, mnemonic()]),
179
- // leading: widget.leading,
180
- // middle: widget.middle,
181
- // validator:
182
- // SeedValidator(type: widget.type, language: widget.language),
183
- ),
184
- BlockchainHeightWidget(
185
- // key: _blockchainHeightKey,
186
- onHeightChange: (height) {
187
- // widget.walletRestorationFromKeysVM.height = height;
188
- print(height);
189
- }),
190
- Container(
191
- color: Colors.green,
192
- width: 100,
193
- height: 56,
194
- child: BaseTextFormField(
195
- hintText: 'Language', initialValue: 'English')),
196
- ])),
197
- );
198
- }
199
-}
lib/src/screens/wallet_list/wallet_list_page.dart
+1
-6
@@ -174,12 +174,7 @@ class WalletListBodyState extends State<WalletListBody> {
174
SizedBox(height: 10.0),
175
PrimaryImageButton(
176
onPressed: () {
177
- if (isSingleCoin) {
178
- Navigator.of(context).pushNamed(Routes.restoreWallet,
179
- arguments: widget.walletListViewModel.currentWalletType);
180
- } else {
181
- Navigator.of(context).pushNamed(Routes.restoreOptions, arguments: false);
182
- }
177
+ Navigator.of(context).pushNamed(Routes.restoreOptions, arguments: false);
178
},
179
image: restoreWalletImage,
180
text: S.of(context).wallet_list_restore_wallet,
lib/utils/show_pop_up.dart
+20
-17
@@ -1,20 +1,23 @@
1
import 'package:flutter/material.dart';
2
3
-Future<T?> showPopUp<T>({
4
- required BuildContext context,
5
- required WidgetBuilder builder,
6
- bool barrierDismissible = true,
7
- Color? barrierColor,
8
- bool useSafeArea = false,
9
- bool useRootNavigator = true,
10
- RouteSettings? routeSettings
11
-}) {
12
- return showDialog<T>(
13
- context: context,
14
- builder: builder,
15
- barrierDismissible: barrierDismissible,
16
- barrierColor: barrierColor,
17
- useSafeArea: useSafeArea,
18
- useRootNavigator: useRootNavigator,
19
- routeSettings: routeSettings);
3
+Future<T?> showPopUp<T>(
4
+ {required BuildContext context,
5
+ required WidgetBuilder builder,
6
+ bool barrierDismissible = true,
7
+ Color? barrierColor,
8
+ bool useSafeArea = false,
9
+ bool useRootNavigator = true,
10
+ RouteSettings? routeSettings}) async {
11
+ if (context.mounted) {
12
+ return showDialog<T>(
13
+ context: context,
14
+ builder: builder,
15
+ barrierDismissible: barrierDismissible,
16
+ barrierColor: barrierColor,
17
+ useSafeArea: useSafeArea,
18
+ useRootNavigator: useRootNavigator,
19
+ routeSettings: routeSettings);
20
+ }
21
+
22
+ return null;
23
}
pubspec_base.yaml
+4
@@ -73,6 +73,10 @@ dependencies:
73
url: https://github.com/cake-tech/cake_backup.git
74
ref: main
75
version: 1.0.0
76
+ flutter_plugin_android_lifecycle: 2.0.9
77
+ path_provider_android: 2.0.24
78
+ shared_preferences_android: 2.0.17
79
+ url_launcher_android: 6.0.24
80
81
dev_dependencies:
82
flutter_test:
scripts/android/app_env.sh
+2
-2
@@ -14,8 +14,8 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
14
APP_ANDROID_TYPE=$1
15
16
MONERO_COM_NAME="Monero.com"
17
-MONERO_COM_VERSION="1.3.4"
18
-MONERO_COM_BUILD_NUMBER=47
17
+MONERO_COM_VERSION="1.3.5"
18
+MONERO_COM_BUILD_NUMBER=48
19
MONERO_COM_BUNDLE_ID="com.monero.app"
20
MONERO_COM_PACKAGE="com.monero.app"
21
scripts/ios/app_env.sh
+2
-2
@@ -13,8 +13,8 @@ TYPES=($MONERO_COM $CAKEWALLET $HAVEN)
13
APP_IOS_TYPE=$1
14
15
MONERO_COM_NAME="Monero.com"
16
-MONERO_COM_VERSION="1.3.4"
17
-MONERO_COM_BUILD_NUMBER=45
16
+MONERO_COM_VERSION="1.3.5"
17
+MONERO_COM_BUILD_NUMBER=46
18
MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
19
20
CAKEWALLET_NAME="Cake Wallet"