mirror of
https://github.com/Such-Software/hash-wallet.git
synced 2026-10-23 06:38:35 +02:00
Added selection of new wallet type. Returned support of bitcoin wallet.
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
import 'package:cake_wallet/core/execution_state.dart';
|
||||
import 'package:cake_wallet/di.dart';
|
||||
import 'package:cake_wallet/entities/wallet_type.dart';
|
||||
import 'package:cake_wallet/routes.dart';
|
||||
import 'package:cake_wallet/store/settings_store.dart';
|
||||
import 'package:cake_wallet/utils/show_bar.dart';
|
||||
import 'package:cake_wallet/view_model/wallet_new_vm.dart';
|
||||
import 'package:flushbar/flushbar.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:cake_wallet/generated/i18n.dart';
|
||||
@@ -10,25 +15,28 @@ import 'package:cake_wallet/src/widgets/scollable_with_bottom_section.dart';
|
||||
import 'package:cake_wallet/src/screens/new_wallet/widgets/select_button.dart';
|
||||
|
||||
class NewWalletTypePage extends BasePage {
|
||||
NewWalletTypePage({this.onTypeSelected, this.isNewWallet = true});
|
||||
NewWalletTypePage(this.walletNewVM,
|
||||
{this.onTypeSelected, this.isNewWallet});
|
||||
|
||||
final void Function(BuildContext, WalletType) onTypeSelected;
|
||||
final bool isNewWallet;
|
||||
final WalletNewVM walletNewVM;
|
||||
|
||||
@override
|
||||
String get title => isNewWallet
|
||||
? S.current.new_wallet
|
||||
: S.current.wallet_list_restore_wallet;
|
||||
String get title =>
|
||||
isNewWallet ? S.current.new_wallet : S.current.wallet_list_restore_wallet;
|
||||
|
||||
@override
|
||||
Widget body(BuildContext context) =>
|
||||
WalletTypeForm(onTypeSelected: onTypeSelected);
|
||||
WalletTypeForm(walletNewVM, isNewWallet, onTypeSelected: onTypeSelected);
|
||||
}
|
||||
|
||||
class WalletTypeForm extends StatefulWidget {
|
||||
WalletTypeForm({this.onTypeSelected});
|
||||
WalletTypeForm(this.walletNewVM, this.isNewWallet, {this.onTypeSelected});
|
||||
|
||||
final void Function(BuildContext, WalletType) onTypeSelected;
|
||||
final WalletNewVM walletNewVM;
|
||||
final bool isNewWallet;
|
||||
|
||||
@override
|
||||
WalletTypeFormState createState() => WalletTypeFormState();
|
||||
@@ -42,10 +50,12 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
final bitcoinIcon =
|
||||
Image.asset('assets/images/bitcoin.png', height: 24, width: 24);
|
||||
final walletTypeImage = Image.asset('assets/images/wallet_type.png');
|
||||
final walletTypeLightImage = Image.asset('assets/images/wallet_type_light.png');
|
||||
final walletTypeLightImage =
|
||||
Image.asset('assets/images/wallet_type_light.png');
|
||||
|
||||
WalletType selected;
|
||||
List<WalletType> types;
|
||||
Flushbar<void> _progressBar;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -56,7 +66,8 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final walletImage = getIt.get<SettingsStore>().isDarkTheme
|
||||
? walletTypeImage : walletTypeLightImage;
|
||||
? walletTypeImage
|
||||
: walletTypeLightImage;
|
||||
|
||||
return Container(
|
||||
padding: EdgeInsets.only(top: 24),
|
||||
@@ -94,7 +105,7 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
),
|
||||
bottomSectionPadding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
bottomSection: PrimaryButton(
|
||||
onPressed: () => widget.onTypeSelected(context, selected),
|
||||
onPressed: () => onTypeSelected(),
|
||||
text: S.of(context).seed_language_next,
|
||||
color: Colors.green,
|
||||
textColor: Colors.white,
|
||||
@@ -114,4 +125,35 @@ class WalletTypeFormState extends State<WalletTypeForm> {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> onTypeSelected() async {
|
||||
if (!widget.isNewWallet) {
|
||||
widget.onTypeSelected(context, selected);
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
_changeProcessText(S.of(context).creating_new_wallet);
|
||||
widget.walletNewVM.type = selected;
|
||||
await widget.walletNewVM
|
||||
.create(options: 'English'); // FIXME: Unnamed constant
|
||||
await _progressBar?.dismiss();
|
||||
final state = widget.walletNewVM.state;
|
||||
|
||||
if (state is ExecutedSuccessfullyState) {
|
||||
widget.onTypeSelected(context, selected);
|
||||
}
|
||||
|
||||
if (state is FailureState) {
|
||||
_changeProcessText(
|
||||
S.of(context).creating_new_wallet_error(state.error));
|
||||
}
|
||||
} catch (e) {
|
||||
_changeProcessText(S.of(context).creating_new_wallet_error(e.toString()));
|
||||
}
|
||||
}
|
||||
|
||||
void _changeProcessText(String text) {
|
||||
_progressBar = createBar<void>(text, duration: null)..show(context);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
),
|
||||
bottomSection: Column(children: <Widget>[
|
||||
PrimaryImageButton(
|
||||
onPressed: () => _generateNewWallet(),
|
||||
onPressed: () => Navigator.of(context).pushNamed(Routes.newWalletType),
|
||||
image: newWalletImage,
|
||||
text: S.of(context).wallet_list_create_new_wallet,
|
||||
color: Theme.of(context).accentTextTheme.subtitle.decorationColor,
|
||||
@@ -175,7 +175,7 @@ class WalletListBodyState extends State<WalletListBody> {
|
||||
SizedBox(height: 10.0),
|
||||
PrimaryImageButton(
|
||||
onPressed: () =>
|
||||
Navigator.of(context).pushNamed(Routes.restoreWallet),
|
||||
Navigator.of(context).pushNamed(Routes.restoreWalletType),
|
||||
image: restoreWalletImage,
|
||||
text: S.of(context).wallet_list_restore_wallet,
|
||||
color: Theme.of(context).accentTextTheme.caption.color,
|
||||
|
||||
Reference in New Issue
Block a user