Skip to content
This repository has been archived by the owner on Oct 21, 2020. It is now read-only.

Commit

Permalink
feat(send): More idiomatic send amounts
Browse files Browse the repository at this point in the history
  • Loading branch information
devinus committed Jan 11, 2018
1 parent fa806fe commit 7bca81d
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 9 deletions.
2 changes: 1 addition & 1 deletion app/block/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ export default DS.Model.extend({
@belongsTo({ inverse: null }) wallet: null,
@belongsTo('account', { inverse: 'blocks' }) source: null,

@attr('big-number') destination: null,
@attr('string') destination: null,
@attr('big-number') amount: null,
});
14 changes: 10 additions & 4 deletions app/components/account-send/component.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,13 @@ import lookupValidator from 'ember-changeset-validations';
import BigNumber from 'npm:bignumber.js';

import SendValidations from '../../validations/send';
import ChangeAmountValidations from '../../validations/change-amount';
import { prefixes } from '../../utils/format-amount';

export default Component.extend({
SendValidations,
ChangeAmountValidations,

accounts: null,
block: null,

Expand All @@ -26,15 +30,17 @@ export default Component.extend({
},

@action
updateAmount(value, changeset) {
if (!value) {
async changeAmount(amount, changeset) {
set(changeset, 'amount', amount);
await changeset.validate();
if (changeset.get('isInvalid')) {
return false;
}

const multiplier = prefixes.Mxrb;
const multiplicand = BigNumber(value).times(multiplier);
const multiplicand = BigNumber(amount).times(multiplier);
const raw = multiplicand.toFixed(0);
set(changeset, 'amount', raw);
this.get('changeset').set('amount', raw);
return false;
},
});
6 changes: 3 additions & 3 deletions app/components/account-send/template.hbs
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{{#bs-form model=changeset onSubmit=onSubmit as |form|}}
{{#form.element class="form-control-lg" controlType="power-select" label="Source Account" property="source" options=accounts onChange=onChange as |el|}}
{{#form.element class="form-control-lg" controlType="power-select" label="Source Account" property="source" required=true options=accounts onChange=onChange as |el|}}
{{#el.control searchField="id" searchPlaceholder="Search for account" as |item|}}
<b>{{item.id}}</b>
{{/el.control}}
{{/form.element}}

{{form.element class="form-control-lg" controlType="text" label="Destination Account" property="destination" placeholder="e.g. xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpiij4txtdo"}}
{{form.element class="form-control-lg" controlType="text" label="Destination Account" property="destination" autocomplete='on' minlength=64 maxlength=64 required=true pattern="^xrb_[a-z0-9]{60}$" placeholder="e.g. xrb_3e3j5tkog48pnny9dmfzj1r16pg8t1e76dz5tmac6iq689wyjfpiij4txtdo"}}

{{form.element class="form-control-lg" static=true controlType="number" label="Amount (XRB)" value=amount onChange=(action 'updateAmount')}}
{{form.element class="form-control-lg" controlType="text" label="Amount (XRB)" model=(changeset (hash amount=amount) ChangeAmountValidations) property='amount' required=true minlength=1 pattern="^\d*\.?\d+$" onChange=(action 'changeAmount')}}

<div role="group" class="d-flex justify-content-center">
{{#bs-button size="lg" type="primary" icon="fa fa-paper-plane" buttonType="submit"}}
Expand Down
5 changes: 5 additions & 0 deletions app/validations/change-amount.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import validateAmount from '../validators/amount';

export default {
amount: validateAmount(),
};
3 changes: 2 additions & 1 deletion app/validations/send.js
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { validatePresence } from 'ember-changeset-validations/validators';

import validateAccount from '../validators/account';
import validateAmount from '../validators/amount';

export default {
source: validatePresence(true),
destination: validateAccount(),
amount: validatePresence(true),
amount: validateAmount(),
};
5 changes: 5 additions & 0 deletions app/validators/amount.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { validateFormat } from 'ember-changeset-validations/validators';

export default function validateAccount() {
return validateFormat({ regex: /^\d*\.?\d+$/ });
}

0 comments on commit 7bca81d

Please sign in to comment.