CAKE-92 | fixed templates saving bug on send and exchange pages; added comma for keyboard on templates pages; added fiat amount controller to send page; added crypto amount and fiat amount controllers to send template pages; added send template store to send view model; added updateTemplate(), addTemplate(), removeTemplate() to send view model and exchange view model; fixed remove template alert on send and exchange pages

This commit is contained in:
OleksandrSobol
2020-10-07 08:58:22 +03:00
parent a8695cc560
commit 521d7294a7
7 changed files with 136 additions and 76 deletions
+7 -10
View File
@@ -307,8 +307,7 @@ class ExchangePage extends BasePage {
),
Observer(builder: (_) {
final templates = exchangeViewModel.templates;
final itemCount =
exchangeViewModel.templates.length;
final itemCount = templates.length;
return ListView.builder(
scrollDirection: Axis.horizontal,
@@ -338,24 +337,22 @@ class ExchangePage extends BasePage {
alertContent: S
.of(context)
.confirm_delete_template,
leftButtonText:
S.of(context).delete,
rightButtonText:
S.of(context).delete,
leftButtonText:
S.of(context).cancel,
actionLeftButton: () {
actionRightButton: () {
Navigator.of(
dialogContext)
.pop();
exchangeViewModel
.exchangeTemplateStore
.remove(
.removeTemplate(
template:
template);
exchangeViewModel
.exchangeTemplateStore
.update();
.updateTemplate();
},
actionRightButton: () =>
actionLeftButton: () =>
Navigator.of(
dialogContext)
.pop());
@@ -134,6 +134,7 @@ class ExchangeTemplatePage extends BasePage {
initialIsAddressEditable: exchangeViewModel
.isDepositAddressEnabled,
isAmountEstimated: false,
hasRefundAddress: true,
currencies: CryptoCurrency.all,
onCurrencySelected: (currency) =>
exchangeViewModel.changeDepositCurrency(
@@ -220,7 +221,7 @@ class ExchangeTemplatePage extends BasePage {
PrimaryButton(
onPressed: () {
if (_formKey.currentState.validate()) {
exchangeViewModel.exchangeTemplateStore.addTemplate(
exchangeViewModel.addTemplate(
amount: exchangeViewModel.depositAmount,
depositCurrency:
exchangeViewModel.depositCurrency.toString(),
@@ -229,7 +230,7 @@ class ExchangeTemplatePage extends BasePage {
provider: exchangeViewModel.provider.toString(),
depositAddress: exchangeViewModel.depositAddress,
receiveAddress: exchangeViewModel.receiveAddress);
exchangeViewModel.exchangeTemplateStore.update();
exchangeViewModel.updateTemplate();
Navigator.of(context).pop();
}
},
+55 -45
View File
@@ -1,7 +1,9 @@
import 'dart:ui';
import 'package:cake_wallet/entities/transaction_priority.dart';
import 'package:cake_wallet/src/widgets/alert_with_two_actions.dart';
import 'package:cake_wallet/src/widgets/keyboard_done_button.dart';
import 'package:cake_wallet/src/widgets/picker.dart';
import 'package:cake_wallet/src/widgets/template_tile.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
@@ -416,53 +418,53 @@ class SendPage extends BasePage {
)),
),
),
// Observer(
// builder: (_) {
// final templates = sendViewModel.templates;
// final itemCount = templates.length;
Observer(
builder: (_) {
final templates = sendViewModel.templates;
final itemCount = templates.length;
// return ListView.builder(
// scrollDirection: Axis.horizontal,
// shrinkWrap: true,
// physics: NeverScrollableScrollPhysics(),
// itemCount: itemCount,
// itemBuilder: (context, index) {
// final template = templates[index];
return ListView.builder(
scrollDirection: Axis.horizontal,
shrinkWrap: true,
physics: NeverScrollableScrollPhysics(),
itemCount: itemCount,
itemBuilder: (context, index) {
final template = templates[index];
// return TemplateTile(
// key: UniqueKey(),
// to: template.name,
// amount: template.amount,
// from: template.cryptoCurrency,
// onTap: () {
// _addressController.text = template.address;
// _cryptoAmountController.text = template.amount;
// getOpenaliasRecord(context);
// },
// onRemove: () {
// showPopUp<void>(
// context: context,
// builder: (dialogContext) {
// return AlertWithTwoActions(
// alertTitle: S.of(context).template,
// alertContent: S.of(context).confirm_delete_template,
// leftButtonText: S.of(context).delete,
// rightButtonText: S.of(context).cancel,
// actionLeftButton: () {
// Navigator.of(dialogContext).pop();
// sendViewModel.sendTemplateStore.remove(template: template);
// sendViewModel.sendTemplateStore.update();
// },
// actionRightButton: () => Navigator.of(dialogContext).pop()
// );
// }
// );
// },
// );
// }
// );
// }
// )
return TemplateTile(
key: UniqueKey(),
to: template.name,
amount: template.amount,
from: template.cryptoCurrency,
onTap: () {
_addressController.text = template.address;
_cryptoAmountController.text = template.amount;
getOpenaliasRecord(context);
},
onRemove: () {
showPopUp<void>(
context: context,
builder: (dialogContext) {
return AlertWithTwoActions(
alertTitle: S.of(context).template,
alertContent: S.of(context).confirm_delete_template,
rightButtonText: S.of(context).delete,
leftButtonText: S.of(context).cancel,
actionRightButton: () {
Navigator.of(dialogContext).pop();
sendViewModel.removeTemplate(template: template);
sendViewModel.updateTemplate();
},
actionLeftButton: () => Navigator.of(dialogContext).pop()
);
}
);
},
);
}
);
}
)
],
),
),
@@ -507,6 +509,14 @@ class SendPage extends BasePage {
}
});
_fiatAmountController.addListener(() {
final amount = _fiatAmountController.text;
if (amount != sendViewModel.fiatAmount) {
sendViewModel.setFiatAmount(amount);
}
});
reaction((_) => sendViewModel.sendAll, (bool all) {
if (all) {
_cryptoAmountController.text = S.current.all;
+24 -8
View File
@@ -134,7 +134,7 @@ class SendTemplatePage extends BasePage {
signed: false, decimal: true),
inputFormatters: [
BlacklistingTextInputFormatter(
RegExp('[\\-|\\ |\\,]'))
RegExp('[\\-|\\ ]'))
],
prefixIcon: Padding(
padding: EdgeInsets.only(top: 9),
@@ -172,7 +172,7 @@ class SendTemplatePage extends BasePage {
signed: false, decimal: true),
inputFormatters: [
BlacklistingTextInputFormatter(
RegExp('[\\-|\\ |\\,]'))
RegExp('[\\-|\\ ]'))
],
prefixIcon: Padding(
padding: EdgeInsets.only(top: 9),
@@ -210,12 +210,12 @@ class SendTemplatePage extends BasePage {
bottomSection: PrimaryButton(
onPressed: () {
if (_formKey.currentState.validate()) {
// sendViewModel.sendTemplateStore.addTemplate(
// name: _nameController.text,
// address: _addressController.text,
// cryptoCurrency: sendViewModel.currency.title,
// amount: _cryptoAmountController.text);
// sendViewModel.sendTemplateStore.update();
sendViewModel.addTemplate(
name: _nameController.text,
address: _addressController.text,
cryptoCurrency: sendViewModel.currency.title,
amount: _cryptoAmountController.text);
sendViewModel.updateTemplate();
Navigator.of(context).pop();
}
},
@@ -249,6 +249,22 @@ class SendTemplatePage extends BasePage {
}
});
_cryptoAmountController.addListener(() {
final amount = _cryptoAmountController.text;
if (amount != sendViewModel.cryptoAmount) {
sendViewModel.setCryptoAmount(amount);
}
});
_fiatAmountController.addListener(() {
final amount = _fiatAmountController.text;
if (amount != sendViewModel.fiatAmount) {
sendViewModel.setFiatAmount(amount);
}
});
_addressController.addListener(() {
final address = _addressController.text;