mirror of
https://github.com/cake-tech/cake_wallet.git
synced 2024-12-23 03:59:23 +00:00
CAKE-172 | added onHeightOrDateEntered function to blockchain_height_widget and called it in the restoreHeightController listener; added string resources to blockchain_height_widget; added isButtonEnabled parameter to rescan view model and wallet restore view model; added reaction on mode in the wallet restore page; applied isDisable to buttons in wallet restore page and rescan page
This commit is contained in:
parent
37d3bf3fa9
commit
838368c1f4
7 changed files with 69 additions and 25 deletions
|
@ -21,23 +21,9 @@ class RescanPage extends BasePage {
|
|||
padding: EdgeInsets.only(left: 24, right: 24, bottom: 24),
|
||||
child:
|
||||
Column(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [
|
||||
Column(
|
||||
children: <Widget>[
|
||||
BlockchainHeightWidget(key: _blockchainHeightWidgetKey),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 40, right: 40, top: 24),
|
||||
child: Text(
|
||||
S.of(context).restore_from_date_or_blockheight,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.normal,
|
||||
color: Theme.of(context).hintColor
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
),
|
||||
BlockchainHeightWidget(key: _blockchainHeightWidgetKey,
|
||||
onHeightOrDateEntered: (value) =>
|
||||
_rescanViewModel.isButtonEnabled = value),
|
||||
Observer(
|
||||
builder: (_) => LoadingPrimaryButton(
|
||||
isLoading:
|
||||
|
@ -51,6 +37,7 @@ class RescanPage extends BasePage {
|
|||
},
|
||||
color: Theme.of(context).accentTextTheme.body2.color,
|
||||
textColor: Colors.white,
|
||||
isDisabled: !_rescanViewModel.isButtonEnabled,
|
||||
))
|
||||
]),
|
||||
);
|
||||
|
|
|
@ -6,7 +6,10 @@ import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
|
|||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
|
||||
class WalletRestoreFromKeysFrom extends StatefulWidget {
|
||||
WalletRestoreFromKeysFrom({Key key}) : super(key: key);
|
||||
WalletRestoreFromKeysFrom({Key key, this.onHeightOrDateEntered})
|
||||
: super(key: key);
|
||||
|
||||
final Function (bool) onHeightOrDateEntered;
|
||||
|
||||
@override
|
||||
WalletRestoreFromKeysFromState createState() =>
|
||||
|
@ -63,7 +66,9 @@ class WalletRestoreFromKeysFromState extends State<WalletRestoreFromKeysFrom> {
|
|||
hintText: S.of(context).restore_spend_key_private,
|
||||
maxLines: null)),
|
||||
BlockchainHeightWidget(
|
||||
key: blockchainHeightKey, onHeightChange: (_) => null)
|
||||
key: blockchainHeightKey,
|
||||
onHeightChange: (_) => null,
|
||||
onHeightOrDateEntered: widget.onHeightOrDateEntered)
|
||||
]),
|
||||
));
|
||||
}
|
||||
|
|
|
@ -7,10 +7,12 @@ import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
|||
import 'package:cake_wallet/src/widgets/blockchain_height_widget.dart';
|
||||
|
||||
class WalletRestoreFromSeedForm extends StatefulWidget {
|
||||
WalletRestoreFromSeedForm({Key key, this.blockHeightFocusNode})
|
||||
WalletRestoreFromSeedForm({Key key, this.blockHeightFocusNode,
|
||||
this.onHeightOrDateEntered})
|
||||
: super(key: key);
|
||||
|
||||
final FocusNode blockHeightFocusNode;
|
||||
final Function (bool) onHeightOrDateEntered;
|
||||
|
||||
@override
|
||||
WalletRestoreFromSeedFormState createState() =>
|
||||
|
@ -63,7 +65,8 @@ class WalletRestoreFromSeedFormState extends State<WalletRestoreFromSeedForm> {
|
|||
readOnly: true)))),
|
||||
BlockchainHeightWidget(
|
||||
focusNode: widget.blockHeightFocusNode,
|
||||
key: blockchainHeightKey)
|
||||
key: blockchainHeightKey,
|
||||
onHeightOrDateEntered: widget.onHeightOrDateEntered)
|
||||
]));
|
||||
}
|
||||
|
||||
|
|
|
@ -28,8 +28,12 @@ class WalletRestorePage extends BasePage {
|
|||
_pages.addAll([
|
||||
WalletRestoreFromSeedForm(
|
||||
key: walletRestoreFromSeedFormKey,
|
||||
blockHeightFocusNode: _blockHeightFocusNode),
|
||||
WalletRestoreFromKeysFrom(key: walletRestoreFromKeysFormKey)
|
||||
blockHeightFocusNode: _blockHeightFocusNode,
|
||||
onHeightOrDateEntered: (value)
|
||||
=> walletRestoreViewModel.isButtonEnabled = value),
|
||||
WalletRestoreFromKeysFrom(key: walletRestoreFromKeysFormKey,
|
||||
onHeightOrDateEntered: (value)
|
||||
=> walletRestoreViewModel.isButtonEnabled = value)
|
||||
]);
|
||||
}
|
||||
|
||||
|
@ -72,6 +76,21 @@ class WalletRestorePage extends BasePage {
|
|||
}
|
||||
});
|
||||
|
||||
reaction((_) => walletRestoreViewModel.mode, (WalletRestoreMode mode)
|
||||
{
|
||||
walletRestoreViewModel.isButtonEnabled = false;
|
||||
|
||||
walletRestoreFromSeedFormKey.currentState.blockchainHeightKey
|
||||
.currentState.restoreHeightController.text = '';
|
||||
walletRestoreFromSeedFormKey.currentState.blockchainHeightKey
|
||||
.currentState.dateController.text = '';
|
||||
|
||||
walletRestoreFromKeysFormKey.currentState.blockchainHeightKey
|
||||
.currentState.restoreHeightController.text = '';
|
||||
walletRestoreFromKeysFormKey.currentState.blockchainHeightKey
|
||||
.currentState.dateController.text = '';
|
||||
});
|
||||
|
||||
return Column(mainAxisAlignment: MainAxisAlignment.center, children: [
|
||||
Expanded(
|
||||
child: PageView.builder(
|
||||
|
@ -113,7 +132,8 @@ class WalletRestorePage extends BasePage {
|
|||
.accentTextTheme
|
||||
.headline
|
||||
.decorationColor,
|
||||
isLoading: walletRestoreViewModel.state is IsExecutingState);
|
||||
isLoading: walletRestoreViewModel.state is IsExecutingState,
|
||||
isDisabled: !walletRestoreViewModel.isButtonEnabled,);
|
||||
},
|
||||
))
|
||||
]);
|
||||
|
|
|
@ -6,10 +6,12 @@ import 'package:cake_wallet/monero/get_height_by_date.dart';
|
|||
import 'package:cake_wallet/src/widgets/base_text_form_field.dart';
|
||||
|
||||
class BlockchainHeightWidget extends StatefulWidget {
|
||||
BlockchainHeightWidget({GlobalKey key, this.onHeightChange, this.focusNode})
|
||||
BlockchainHeightWidget({GlobalKey key, this.onHeightChange, this.focusNode,
|
||||
this.onHeightOrDateEntered})
|
||||
: super(key: key);
|
||||
|
||||
final Function(int) onHeightChange;
|
||||
final Function(bool) onHeightOrDateEntered;
|
||||
final FocusNode focusNode;
|
||||
|
||||
@override
|
||||
|
@ -26,6 +28,13 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
|
|||
@override
|
||||
void initState() {
|
||||
restoreHeightController.addListener(() {
|
||||
if (restoreHeightController.text.isNotEmpty) {
|
||||
widget.onHeightOrDateEntered?.call(true);
|
||||
}
|
||||
else {
|
||||
widget.onHeightOrDateEntered?.call(false);
|
||||
dateController.text = '';
|
||||
}
|
||||
try {
|
||||
_changeHeight(restoreHeightController.text != null &&
|
||||
restoreHeightController.text.isNotEmpty
|
||||
|
@ -83,6 +92,18 @@ class BlockchainHeightState extends State<BlockchainHeightWidget> {
|
|||
))
|
||||
],
|
||||
),
|
||||
Padding(
|
||||
padding: EdgeInsets.only(left: 40, right: 40, top: 24),
|
||||
child: Text(
|
||||
S.of(context).restore_from_date_or_blockheight,
|
||||
textAlign: TextAlign.center,
|
||||
style: TextStyle(
|
||||
fontSize: 12,
|
||||
fontWeight: FontWeight.normal,
|
||||
color: Theme.of(context).hintColor
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
);
|
||||
}
|
||||
|
|
|
@ -10,12 +10,16 @@ enum RescanWalletState { rescaning, none }
|
|||
abstract class RescanViewModelBase with Store {
|
||||
RescanViewModelBase(this._wallet) {
|
||||
state = RescanWalletState.none;
|
||||
isButtonEnabled = false;
|
||||
}
|
||||
|
||||
@observable
|
||||
RescanWalletState state;
|
||||
final WalletBase _wallet;
|
||||
|
||||
@observable
|
||||
bool isButtonEnabled;
|
||||
|
||||
@action
|
||||
Future<void> rescanCurrentWallet({int restoreHeight}) async {
|
||||
state = RescanWalletState.rescaning;
|
||||
|
|
|
@ -23,6 +23,7 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
|
|||
Box<WalletInfo> walletInfoSource,
|
||||
{@required WalletType type})
|
||||
: super(appStore, walletInfoSource, type: type, isRecovery: true) {
|
||||
isButtonEnabled = false;
|
||||
mode = WalletRestoreMode.seed;
|
||||
_walletCreationService.changeWalletType(type: WalletType.monero);
|
||||
}
|
||||
|
@ -30,6 +31,9 @@ abstract class WalletRestoreViewModelBase extends WalletCreationVM with Store {
|
|||
@observable
|
||||
WalletRestoreMode mode;
|
||||
|
||||
@observable
|
||||
bool isButtonEnabled;
|
||||
|
||||
final WalletCreationService _walletCreationService;
|
||||
|
||||
@override
|
||||
|
|
Loading…
Reference in a new issue