wip add pipes - remove filter service

This commit is contained in:
JDonadio 2017-11-16 13:27:22 -03:00
parent 477c1508a0
commit 52f87692b4
No known key found for this signature in database
GPG Key ID: EC1F4E04B2BFA730
15 changed files with 104 additions and 115 deletions

View File

@ -70,8 +70,10 @@ import { ChooseFeeLevelPage } from '../pages/choose-fee-level/choose-fee-level';
import { CustomAmountPage } from '../pages/receive/custom-amount/custom-amount';
/* Pipes */
import { ToUnitPipe } from '../pipes/toUnit';
import { ToFiatPipe } from '../pipes/toFiat';
import { SatToUnitPipe } from '../pipes/satToUnit';
import { SatToFiatPipe } from '../pipes/satToFiat';
import { UnitToFiatPipe } from '../pipes/unitToFiat';
import { FiatToUnitPipe } from '../pipes/fiatToUnit';
/* Providers */
import { AddressBookProvider } from '../providers/address-book/address-book';
@ -82,7 +84,6 @@ import { ConfigProvider } from '../providers/config/config';
import { DerivationPathHelperProvider } from '../providers/derivation-path-helper/derivation-path-helper';
import { ExternalLinkProvider } from '../providers/external-link/external-link';
import { FeeProvider } from '../providers/fee/fee';
import { Filter } from '../providers/filter/filter';
import { IncomingDataProvider } from '../providers/incoming-data/incoming-data';
import { LanguageProvider } from '../providers/language/language';
import { NodeWebkitProvider } from '../providers/node-webkit/node-webkit';
@ -162,7 +163,6 @@ let providers: any = [
DerivationPathHelperProvider,
ExternalLinkProvider,
FeeProvider,
Filter,
IncomingDataProvider,
LanguageProvider,
NodeWebkitProvider,
@ -204,8 +204,10 @@ let providers: any = [
];
let pipes = [
ToUnitPipe,
ToFiatPipe,
SatToUnitPipe,
SatToFiatPipe,
UnitToFiatPipe,
FiatToUnitPipe
];
export function declarationsComponents() {

View File

@ -1,13 +1,11 @@
<ion-header>
<ion-navbar>
<ion-title>Amount</ion-title>
<ion-title>{{'Amount' | translate}}</ion-title>
</ion-navbar>
</ion-header>
<!-- TODO send max -->
<ion-content>
<ion-card>
<ion-item>
@ -16,8 +14,7 @@
<ion-list>
<ion-item>
<ion-icon *ngIf="recipientType == 'wallet'" item-left>
<img src="assets/img/icon-wallet.svg" [ngClass]="{'wallet-background-color-default': !toColor}" [ngStyle]="{'background-color': color}"
class="icon-wallet">
<img src="assets/img/icon-wallet.svg" class="icon-wallet">
</ion-icon>
<ion-icon *ngIf="recipientType == 'contact'" item-left>
<img src="assets/img/contact-placeholder.svg" class="icon-contact">
@ -34,11 +31,14 @@
<div [ngClass]="{'amount-pane-recipient': !customAmount && !nextStep,
'amount-pane-no-recipient': customAmount || nextStep}">
<div class="amount-bar">
<!-- <div class="amount-bar">
<div class="title">
<span translate>Amount</span>
</div>
</div>
</div> -->
<div>{{asd | unitToFiat: expression }}</div>
<div>{{asd2 | fiatToUnit: expression}}</div>
<div class="amount">
<div class="amount__editable" [ngClass]="{'amount__editable--minimize': smallFont, 'amount__editable--standard': !smallFont, 'amount__editable--placeholder': !amount}">

View File

@ -9,7 +9,6 @@ import { ConfigProvider } from '../../../providers/config/config';
import { PlatformProvider } from '../../../providers/platform/platform';
import { NodeWebkitProvider } from '../../../providers/node-webkit/node-webkit';
import { RateProvider } from '../../../providers/rate/rate';
import { Filter } from '../../../providers/filter/filter';
import { TxFormatProvider } from '../../../providers/tx-format/tx-format';
//pages
@ -21,6 +20,8 @@ import { CustomAmountPage } from '../../receive/custom-amount/custom-amount';
templateUrl: 'amount.html',
})
export class AmountPage {
public expression: any;
public finalAmount: any;
public amountStr: string = '';
public smallFont: boolean;
@ -69,9 +70,11 @@ export class AmountPage {
private platformProvider: PlatformProvider,
private nodeWebkitProvider: NodeWebkitProvider,
private rateProvider: RateProvider,
private filter: Filter,
private txFormatProvider: TxFormatProvider
) {
this.expression = 0;
this.finalAmount = 0;
this.allowSend = false;
this.config = this.configProvider.get();
this.walletConfig = this.config.wallet;
@ -83,7 +86,6 @@ export class AmountPage {
}
ionViewDidLoad() {
console.log('Params', this.navParams.data);
this.toAddress = this.navParams.data.toAddress;
this.fromSend = this.navParams.data.fromSend;
this._id = this.navParams.data.id;
@ -95,7 +97,7 @@ export class AmountPage {
this.amount = this.navParams.data.amount;
this.setAvailableUnits();
this.updateUnitUI();
//this.showMenu = $ionicHistory.backView() && ($ionicHistory.backView().stateName == 'tabs.send' || $ionicHistory.backView().stateName == 'tabs.bitpayCard'); TODO
if (!this.nextStep && !this.toAddress) {
this.logger.error('Bad params at amount')
throw ('bad params');
@ -131,7 +133,7 @@ export class AmountPage {
public toggleAlternative(): void {
if (this.amountStr && this.isExpression(this.amountStr)) {
let amount = this.evaluate(this.format(this.amountStr));
this.globalResult = '= ' + this.processResult(amount);
// this.globalResult = '= ' + this.processResult(amount);
}
};
@ -188,6 +190,7 @@ export class AmountPage {
}
public pushDigit(digit: string): void {
this.expression += digit;
if (this.amountStr && this.amountStr.length >= this.LENGTH_EXPRESSION_LIMIT) return;
if (this.amountStr.indexOf('.') > -1 && digit == '.') return;
// TODO: next line - Need: isFiat
@ -205,6 +208,7 @@ export class AmountPage {
};
public pushOperator(operator: string): void {
this.expression += operator;
if (!this.amountStr || this.amountStr.length == 0) return;
this.amountStr = this._pushOperator(this.amountStr, operator);
};
@ -237,7 +241,7 @@ export class AmountPage {
var result = this.evaluate(formatedValue);
this.allowSend = _.isNumber(result) && +result > 0;
if (_.isNumber(result)) {
this.globalResult = this.isExpression(this.amountStr) ? '= ' + this.processResult(result) : '';
// this.globalResult = this.isExpression(this.amountStr) ? '= ' + this.processResult(result) : '';
if (this.availableUnits[this.unitIndex].isFiat) {
@ -249,7 +253,7 @@ export class AmountPage {
this.allowSend = false;
}
} else {
this.alternativeAmount = this.filter.formatFiatAmount((this.toFiat(result)));
// this.alternativeAmount = this.txFormatProvider.toFiat(result);
}
this.globalResult = result.toString();
}
@ -276,10 +280,10 @@ export class AmountPage {
return result;
};
private processResult(val: number): number {
if (this.availableUnits[this.unitIndex].isFiat) return this.filter.formatFiatAmount(val);
else return this.txFormatProvider.formatAmount(parseInt(val.toFixed(this.unitDecimals)) * this.unitToSatoshi, true);
};
// private processResult(val: number): number {
// if (this.availableUnits[this.unitIndex].isFiat) return this.filter.formatFiatAmount(val);
// else return this.txFormatProvider.formatAmount(parseInt(val.toFixed(this.unitDecimals)) * this.unitToSatoshi, true);
// };
private fromFiat(val: number): number {
return parseFloat((this.rateProvider.fromFiat(val, this.fiatCode, this.availableUnits[this.altUnitIndex].id) * this.satToUnit).toFixed(this.unitDecimals));

View File

@ -331,7 +331,7 @@ export class ConfirmPage {
tx.amountStr = this.txFormatProvider.formatAmountStr(wallet.coin, tx.amount);
tx.amountValueStr = tx.amountStr.split(' ')[0];
tx.amountUnitStr = tx.amountStr.split(' ')[1];
tx.alternativeAmountStr = this.txFormatProvider.formatAlternativeStr(wallet.coin, tx.amount);
// tx.alternativeAmountStr = this.txFormatProvider.formatAlternativeStr(wallet.coin, tx.amount);
}
updateAmount();
@ -380,7 +380,7 @@ export class ConfirmPage {
this.getTxp(_.clone(tx), wallet, opts.dryRun).then((txp: any) => {
this.onGoingProcessProvider.set('calculatingFee', false);
txp.feeStr = this.txFormatProvider.formatAmountStr(wallet.coin, txp.fee);
txp.alternativeFeeStr = this.txFormatProvider.formatAlternativeStr(wallet.coin, txp.fee);
// txp.alternativeFeeStr = this.txFormatProvider.formatAlternativeStr(wallet.coin, txp.fee);
let per = (txp.fee / (txp.amount + txp.fee) * 100);
txp.feeRatePerStr = per.toFixed(2) + '%';

View File

@ -20,8 +20,8 @@
<span translate>Moved</span>
</div>
<div class="amount-str">{{amountStr | toUnit : tx.amount}}</div>
<div class="amount-alt-str">{{tx.alternativeAmountStr || altAmountStr | toFiat : tx.amount}}</div>
<div class="amount-str">{{amountStr | satToUnit : tx.amount}}</div>
<div class="amount-alt-str">{{tx.alternativeAmountStr || altAmountStr | satToFiat : tx.amount}}</div>
</ion-item>
<ion-item>
@ -56,7 +56,7 @@
<button ion-item (click)="addMemo()" *ngIf="tx.action != 'received'">
<ion-label>{{'Fee' | translate}}</ion-label>
<ion-note item-end>
{{unitFee | toUnit: tx.fees || '...'}} - {{fiatFee | toFiat: tx.fees || '...'}}
{{unitFee | satToUnit: tx.fees || '...'}} - {{fiatFee | satToFiat: tx.fees || '...'}}
</ion-note>
</button>

View File

@ -7,7 +7,7 @@
<ion-content>
<div class="balance-header" (click)="getTxHistory(true)">
<div class="balance-str">{{wallet.status.availableBalanceStr}}</div>
<div class="balance-alt-str">{{alternativeBalanceStr | toFiat : wallet.status.totalBalanceSat}}</div>
<div class="balance-alt-str">{{alternativeBalanceStr | satToFiat : wallet.status.totalBalanceSat}}</div>
</div>
<ion-list>
@ -19,7 +19,7 @@
</ion-icon>
<div class="action">{{tx.action}}</div>
<div class="detail">
<div class="amount">{{amountStr | toUnit : tx.amount}}</div>
<div class="amount">{{amountStr | satToUnit : tx.amount}}</div>
<div class="date">{{tx.time * 1000 | amTimeAgo}}</div>
</div>
</button>

21
src/pipes/fiatToUnit.ts Normal file
View File

@ -0,0 +1,21 @@
import { Pipe, PipeTransform } from '@angular/core';
import { DecimalPipe } from '@angular/common';
import { RateProvider } from '../providers/rate/rate';
import { ConfigProvider } from '../providers/config/config';
@Pipe({ name: 'fiatToUnit' })
export class FiatToUnitPipe implements PipeTransform {
private walletSettings: any;
constructor(
private configProvider: ConfigProvider,
private rateProvider: RateProvider,
private decimalPipe: DecimalPipe,
) {
this.walletSettings = this.configProvider.get().wallet.settings;
}
transform(value: string, amount: number): any {
let amount_ = this.rateProvider.fromFiat(amount, this.walletSettings.alternativeIsoCode, this.walletSettings.unitCode);
return this.decimalPipe.transform(amount_, '1.2-8') + ' ' + this.walletSettings.unitCode.toUpperCase();
}
}

View File

@ -3,21 +3,19 @@ import { TxFormatProvider } from '../providers/tx-format/tx-format';
import { ConfigProvider } from '../providers/config/config';
import { DecimalPipe } from '@angular/common';
@Pipe({ name: 'toFiat' })
export class ToFiatPipe implements PipeTransform {
private unitCode: string;
private alternativeIsoCode: string;
@Pipe({ name: 'satToFiat' })
export class SatToFiatPipe implements PipeTransform {
private walletSettings: any;
constructor(
private configProvider: ConfigProvider,
private txFormatProvider: TxFormatProvider,
private decimalPipe: DecimalPipe,
) {
this.unitCode = this.configProvider.get().wallet.settings.unitCode;
this.alternativeIsoCode = this.configProvider.get().wallet.settings.alternativeIsoCode;
this.walletSettings = this.configProvider.get().wallet.settings;
}
transform(value: string, satoshis: number): any {
let amount = this.txFormatProvider.toFiat(this.unitCode, satoshis, this.alternativeIsoCode) || 0;
return this.decimalPipe.transform(amount, '1.2-2') + ' ' + this.alternativeIsoCode;
let amount = this.txFormatProvider.toFiat(this.walletSettings.unitCode, satoshis, this.walletSettings.alternativeIsoCode) || 0;
return this.decimalPipe.transform(amount, '1.2-2') + ' ' + this.walletSettings.alternativeIsoCode;
}
}

View File

@ -2,8 +2,8 @@ import { Pipe, PipeTransform } from '@angular/core';
import { TxFormatProvider } from '../providers/tx-format/tx-format';
import { ConfigProvider } from '../providers/config/config';
@Pipe({ name: 'toUnit' })
export class ToUnitPipe implements PipeTransform {
@Pipe({ name: 'satToUnit' })
export class SatToUnitPipe implements PipeTransform {
private unitCode: string;
constructor(

21
src/pipes/unitToFiat.ts Normal file
View File

@ -0,0 +1,21 @@
import { Pipe, PipeTransform } from '@angular/core';
import { RateProvider } from '../providers/rate/rate';
import { ConfigProvider } from '../providers/config/config';
import { DecimalPipe } from '@angular/common';
@Pipe({ name: 'unitToFiat' })
export class UnitToFiatPipe implements PipeTransform {
private walletSettings: any;
constructor(
private configProvider: ConfigProvider,
private rateProvider: RateProvider,
private decimalPipe: DecimalPipe,
) {
this.walletSettings = this.configProvider.get().wallet.settings;
}
transform(value: string, amount: number): any {
let amount_ = this.rateProvider.toFiat(amount, this.walletSettings.alternativeIsoCode, this.walletSettings.unitCode);
return this.decimalPipe.transform(amount, '1.2-2') + ' ' + this.walletSettings.alternativeIsoCode;
}
}

View File

@ -1,50 +0,0 @@
import { Injectable } from '@angular/core';
import * as _ from "lodash";
@Injectable()
export class Filter {
public formats: any;
constructor() {
console.log('Hello Filter Provider');
this.formats = {
CURRENCY_SYM: "$",
DECIMAL_SEP: ".",
GROUP_SEP: ","
}
}
formatFiatAmount(amount: number) {
var value: any;
var sep: any;
var group: any;
var intValue: any;
var floatValue: any;
var finalValue: any;
var fractionSize = 2;
value = _.round(amount, fractionSize).toString();
sep = value.indexOf(this.formats.DECIMAL_SEP);
group = value.indexOf(this.formats.GROUP_SEP);
if (amount >= 0) {
if (group > 0) {
if (sep < 0) {
return value;
}
intValue = value.substring(0, sep);
floatValue = parseFloat(value.substring(sep));
floatValue = floatValue.toFixed(2);
floatValue = floatValue.toString().substring(1);
finalValue = intValue + floatValue;
return finalValue;
} else {
value = parseFloat(value);
return value.toFixed(2);
}
}
return 0;
}
}

View File

@ -90,11 +90,11 @@ export class RateProvider {
};
toFiat(satoshis, code, chain) {
return satoshis * this.SAT_TO_BTC * this.getRate(code, chain);
return satoshis * this.getRate(code, chain);
};
fromFiat(amount, code, chain) {
return amount / this.getRate(code, chain) * this.BTC_TO_SAT;
return amount / this.getRate(code, chain);
};
listAlternatives(sort: boolean) {

View File

@ -2,7 +2,6 @@ import { Injectable } from '@angular/core';
import { BwcProvider } from '../bwc/bwc';
import { RateProvider } from '../rate/rate';
import { ConfigProvider } from '../config/config';
import { Filter } from '../filter/filter';
import * as _ from "lodash";
@Injectable()
@ -15,7 +14,6 @@ export class TxFormatProvider {
private bwc: BwcProvider,
private rate: RateProvider,
private config: ConfigProvider,
private filter: Filter
) {
console.log('Hello TxFormatProvider Provider');
}
@ -55,16 +53,16 @@ export class TxFormatProvider {
});
};
public formatAlternativeStr(coin: string, satoshis: number) {
if (isNaN(satoshis)) return;
let settings = this.config.get().wallet.settings;
// public formatAlternativeStr(coin: string, satoshis: number) {
// if (isNaN(satoshis)) return;
// let settings = this.config.get().wallet.settings;
var v1 = parseFloat((this.rate.toFiat(satoshis, settings.alternativeIsoCode, coin)).toFixed(2));
var v1FormatFiat = this.filter.formatFiatAmount(v1);
if (!v1FormatFiat) return;
// var v1 = parseFloat((this.rate.toFiat(satoshis, settings.alternativeIsoCode, coin)).toFixed(2));
// // var v1FormatFiat = this.filter.formatFiatAmount(v1);
// if (!v1FormatFiat) return;
return v1FormatFiat + ' ' + settings.alternativeIsoCode;
};
// return v1FormatFiat + ' ' + settings.alternativeIsoCode;
// };
public processTx(coin: string, tx: any): any {
if (!tx || tx.action == 'invalid')
@ -90,7 +88,7 @@ export class TxFormatProvider {
}
tx.amountStr = this.formatAmountStr(coin, tx.amount);
tx.alternativeAmountStr = this.formatAlternativeStr(coin, tx.amount);
// tx.alternativeAmountStr = this.formatAlternativeStr(coin, tx.amount);
tx.feeStr = this.formatAmountStr(coin, tx.fee || tx.fees);
if (tx.amountStr) {
@ -179,7 +177,7 @@ export class TxFormatProvider {
// If fiat currency
if (currency != 'BCH' && currency != 'BTC' && currency != 'sat') {
amountUnitStr = this.filter.formatFiatAmount(amount) + ' ' + currency;
// amountUnitStr = this.filter.formatFiatAmount(amount) + ' ' + currency;
amountSat = this.rate.fromFiat(amount, currency, coin).toFixed(0);
} else if (currency == 'sat') {
amountSat = amount;

View File

@ -8,7 +8,6 @@ import { TxFormatProvider } from '../tx-format/tx-format';
import { PersistenceProvider } from '../persistence/persistence';
import { BwcErrorProvider } from '../bwc-error/bwc-error';
import { RateProvider } from '../rate/rate';
import { Filter } from '../filter/filter';
import { PopupProvider } from '../popup/popup';
import { OnGoingProcessProvider } from '../on-going-process/on-going-process';
import { TouchIdProvider } from '../touchid/touchid';
@ -46,8 +45,6 @@ describe('Provider: Wallet Provider', () => {
{ provide: TxFormatProvider },
{ provide: BwcProvider, useClass: BwcProviderMock },
{ provide: BwcErrorProvider },
{ provide: RateProvider },
{ provide: Filter },
{ provide: PopupProvider },
{ provide: OnGoingProcessProvider },
{ provide: TouchIdProvider },

View File

@ -7,7 +7,6 @@ import { TxFormatProvider } from '../tx-format/tx-format';
import { PersistenceProvider } from '../persistence/persistence';
import { BwcErrorProvider } from '../bwc-error/bwc-error';
import { RateProvider } from '../rate/rate';
import { Filter } from '../filter/filter';
import { PopupProvider } from '../popup/popup';
import { OnGoingProcessProvider } from '../on-going-process/on-going-process';
import { TouchIdProvider } from '../touchid/touchid';
@ -44,7 +43,6 @@ export class WalletProvider {
private persistenceProvider: PersistenceProvider,
private bwcErrorProvider: BwcErrorProvider,
private rateProvider: RateProvider,
private filter: Filter,
private popupProvider: PopupProvider,
private ongoingProcess: OnGoingProcessProvider,
private touchidProvider: TouchIdProvider
@ -215,11 +213,11 @@ export class WalletProvider {
let spendableBalanceAlternative = this.rateProvider.toFiat(cache.spendableAmount, cache.alternativeIsoCode, wallet.coin);
let alternativeConversionRate = this.rateProvider.toFiat(100000000, cache.alternativeIsoCode, wallet.coin);
cache.totalBalanceAlternative = this.filter.formatFiatAmount(totalBalanceAlternative);
cache.pendingBalanceAlternative = this.filter.formatFiatAmount(pendingBalanceAlternative);
cache.lockedBalanceAlternative = this.filter.formatFiatAmount(lockedBalanceAlternative);
cache.spendableBalanceAlternative = this.filter.formatFiatAmount(spendableBalanceAlternative);
cache.alternativeConversionRate = this.filter.formatFiatAmount(alternativeConversionRate);
// cache.totalBalanceAlternative = this.filter.formatFiatAmount(totalBalanceAlternative);
// cache.pendingBalanceAlternative = this.filter.formatFiatAmount(pendingBalanceAlternative);
// cache.lockedBalanceAlternative = this.filter.formatFiatAmount(lockedBalanceAlternative);
// cache.spendableBalanceAlternative = this.filter.formatFiatAmount(spendableBalanceAlternative);
// cache.alternativeConversionRate = this.filter.formatFiatAmount(alternativeConversionRate);
cache.alternativeBalanceAvailable = true;
cache.isRateAvailable = true;