mirror of https://github.com/BTCPrivate/copay.git
get default values
This commit is contained in:
parent
b49c672103
commit
4f93163f58
|
@ -70,6 +70,7 @@ import { TouchIdProvider } from '../providers/touchid/touchid';
|
|||
import { TxFormatProvider } from '../providers/tx-format/tx-format';
|
||||
import { WalletProvider } from '../providers/wallet/wallet';
|
||||
import { ReleaseProvider } from '../providers/release/release';
|
||||
import { DerivationPathHelperProvider } from '../providers/derivationPathHelper/derivationPathHelper';
|
||||
|
||||
export function createTranslateLoader(http: Http) {
|
||||
return new TranslatePoHttpLoader(http, 'assets/i18n', '.po');
|
||||
|
@ -123,6 +124,7 @@ let providers: any = [
|
|||
TxFormatProvider,
|
||||
WalletProvider,
|
||||
ReleaseProvider,
|
||||
DerivationPathHelperProvider,
|
||||
{
|
||||
provide: ErrorHandler,
|
||||
useClass: IonicErrorHandler
|
||||
|
|
|
@ -8,7 +8,6 @@
|
|||
<div class="tabs">
|
||||
<div class="tab" [ngClass]="{'selected': selectedTab == 'words'}" (click)="selectTab('words')"><span>Recovery phrase</span></div>
|
||||
<div class="tab" [ngClass]="{'selected': selectedTab == 'file'}" (click)="selectTab('file')"><span>File/Text</span></div>
|
||||
<div class="tab" [ngClass]="{'selected': selectedTab == 'hw'}" (click)="selectTab('hw')" *ngIf="appName == 'copay'"><span>Hardware wallet</span></div>
|
||||
</div>
|
||||
|
||||
<form [formGroup]="importForm" (ngSubmit)="import()">
|
||||
|
@ -29,25 +28,6 @@
|
|||
</ion-item>
|
||||
</div>
|
||||
|
||||
<div *ngIf="selectedTab == 'hw'">
|
||||
<ion-item>
|
||||
<ion-label stacked>Wallet type</ion-label>
|
||||
<ion-select [(ngModel)]="formData.selectedSeed.id" formControlName="selectedSeed" (ionChange)="seedOptionsChange(formData.selectedSeed.id)">
|
||||
<ion-option *ngFor="let opt of seedOptions" [value]="opt.id">{{opt.label}}</ion-option>
|
||||
</ion-select>
|
||||
</ion-item>
|
||||
|
||||
<ion-item>
|
||||
<ion-label stacked>Account number</ion-label>
|
||||
<ion-input type="number" [(ngModel)]="formData.account" formControlName="account"></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item *ngIf="formData.selectedSeed.id == 'trezor'">
|
||||
<ion-label stacked>Shared wallet</ion-label>
|
||||
<ion-toggle [(ngModel)]="formData.isShared" formControlName="isShared"></ion-toggle>
|
||||
</ion-item>
|
||||
</div>
|
||||
|
||||
<ion-item-divider color="light"></ion-item-divider>
|
||||
|
||||
<ion-item (click)="showAdvOpts = !showAdvOpts">
|
||||
|
@ -67,11 +47,6 @@
|
|||
<ion-input type="text" [(ngModel)]="formData.derivationPath" formControlName="derivationPath"></ion-input>
|
||||
</ion-item>
|
||||
|
||||
<ion-item>
|
||||
<ion-label stacked>From hardware wallet</ion-label>
|
||||
<ion-toggle [(ngModel)]="formData.fromHW" formControlName="fromHW"></ion-toggle>
|
||||
</ion-item>
|
||||
|
||||
<ion-item>
|
||||
<ion-label stacked>Testnet</ion-label>
|
||||
<ion-toggle [(ngModel)]="formData.testnet" formControlName="testnet" (ionChange)="setDerivationPath()"></ion-toggle>
|
||||
|
|
|
@ -2,8 +2,10 @@ import { Component, OnInit } from '@angular/core';
|
|||
import { NavController } from 'ionic-angular';
|
||||
import { Validators, FormBuilder, FormGroup } from '@angular/forms';
|
||||
|
||||
import { AppProvider } from '../../../providers/app/app';
|
||||
import * as _ from 'lodash';
|
||||
import { BwcProvider } from '../../../providers/bwc/bwc';
|
||||
import { WalletProvider } from '../../../providers/wallet/wallet';
|
||||
import { DerivationPathHelperProvider } from '../../../providers/derivationPathHelper/derivationPathHelper';
|
||||
import { ConfigProvider } from '../../../providers/config/config';
|
||||
|
||||
@Component({
|
||||
selector: 'page-import-wallet',
|
||||
|
@ -15,70 +17,45 @@ export class ImportWalletPage implements OnInit{
|
|||
public selectedTab: string;
|
||||
public seedOptions: any;
|
||||
|
||||
private appName: string;
|
||||
private derivationPathByDefault: string;
|
||||
private derivationPathForTestnet: string;
|
||||
private importForm: FormGroup;
|
||||
|
||||
constructor(
|
||||
public navCtrl: NavController,
|
||||
private app: AppProvider,
|
||||
private fb: FormBuilder
|
||||
private fb: FormBuilder,
|
||||
private bwc: BwcProvider,
|
||||
private dpHelper: DerivationPathHelperProvider,
|
||||
private wp: WalletProvider,
|
||||
private cp: ConfigProvider,
|
||||
) {
|
||||
this.selectedTab = 'words';
|
||||
this.derivationPathByDefault = "m/44'/0'/0'";
|
||||
this.derivationPathForTestnet = "m/44'/1'/0'";
|
||||
this.derivationPathByDefault = this.dpHelper.default;
|
||||
this.derivationPathForTestnet = this.dpHelper.defaultTestnet;
|
||||
this.showAdvOpts = false;
|
||||
this.formData = {
|
||||
words: null,
|
||||
text: null,
|
||||
filePassword: null,
|
||||
selectedSeed: null,
|
||||
isShared: null,
|
||||
account: 1,
|
||||
mnemonicPassword: null,
|
||||
file: null,
|
||||
filePassword: null,
|
||||
derivationPath: this.derivationPathByDefault,
|
||||
fromHW: false,
|
||||
testnet: false,
|
||||
bwsURL: 'https://bws.bitpay.com/bws/api',
|
||||
bwsURL: this.cp.get()['bws']['url'],
|
||||
};
|
||||
this.appName = this.app.info.name;
|
||||
this.updateSeedSourceSelect();
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
this.importForm = this.fb.group({
|
||||
words: ['', Validators.required],
|
||||
mnemonicPassword: [''],
|
||||
file: [''],
|
||||
filePassword: [''],
|
||||
selectedSeed: [''],
|
||||
isShared: [''],
|
||||
account: [''],
|
||||
mnemonicPassword: [''],
|
||||
derivationPath: [''],
|
||||
fromHW: [''],
|
||||
testnet: [''],
|
||||
bwsURL: [''],
|
||||
});
|
||||
}
|
||||
|
||||
updateSeedSourceSelect() {
|
||||
if (this.appName === 'bitpay') return;
|
||||
|
||||
this.seedOptions = [{
|
||||
id: 'trezor',
|
||||
label: 'Trezor hardware wallet',
|
||||
supportsTestnet: false
|
||||
}, {
|
||||
id: 'ledger',
|
||||
label: 'Ledger hardware wallet',
|
||||
supportsTestnet: false
|
||||
}];
|
||||
this.formData.selectedSeed = {
|
||||
id: this.seedOptions[0].id
|
||||
};
|
||||
}
|
||||
|
||||
selectTab(tab: string) {
|
||||
this.selectedTab = tab;
|
||||
|
||||
|
@ -105,14 +82,18 @@ export class ImportWalletPage implements OnInit{
|
|||
this.importForm.get('filePassword').updateValueAndValidity();
|
||||
}
|
||||
|
||||
seedOptionsChange(id: string) {
|
||||
if (id === 'trezor') this.formData.isShared = null;
|
||||
}
|
||||
|
||||
setDerivationPath() {
|
||||
this.formData.derivationPath = this.formData.testnet ? this.derivationPathForTestnet : this.derivationPathByDefault;
|
||||
}
|
||||
|
||||
normalizeMnemonic(words: string) {
|
||||
if (!words || !words.indexOf) return words;
|
||||
var isJA = words.indexOf('\u3000') > -1;
|
||||
var wordList = words.split(/[\u3000\s]+/);
|
||||
|
||||
return wordList.join(isJA ? '\u3000' : ' ');
|
||||
};
|
||||
|
||||
import() {
|
||||
console.log(this.formData);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
import { Injectable } from '@angular/core';
|
||||
|
||||
@Injectable()
|
||||
export class DerivationPathHelperProvider {
|
||||
public default: string;
|
||||
public defaultTestnet: string;
|
||||
|
||||
public constructor() {
|
||||
this.default = "m/44'/0'/0'";
|
||||
this.defaultTestnet = "m/44'/1'/0'";
|
||||
}
|
||||
|
||||
parse(str: string) {
|
||||
var arr = str.split('/');
|
||||
var ret = {
|
||||
derivationStrategy: '',
|
||||
networkName: '',
|
||||
account: 0
|
||||
};
|
||||
|
||||
if (arr[0] != 'm')
|
||||
return false;
|
||||
|
||||
switch (arr[1]) {
|
||||
case "44'":
|
||||
ret.derivationStrategy = 'BIP44';
|
||||
break;
|
||||
case "45'":
|
||||
return {
|
||||
derivationStrategy: 'BIP45',
|
||||
networkName: 'livenet',
|
||||
account: 0,
|
||||
}
|
||||
case "48'":
|
||||
ret.derivationStrategy = 'BIP48';
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
};
|
||||
|
||||
switch (arr[2]) {
|
||||
case "0'":
|
||||
ret.networkName = 'livenet';
|
||||
break;
|
||||
case "1'":
|
||||
ret.networkName = 'testnet';
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
};
|
||||
|
||||
var match = arr[3].match(/(\d+)'/);
|
||||
if (!match)
|
||||
return false;
|
||||
ret.account = +match[1]
|
||||
|
||||
return ret;
|
||||
};
|
||||
}
|
Loading…
Reference in New Issue