Merge pull request #6872 from JDonadio/new/create-single-wallet-02

Create wallet - show form fields depending on wallet key selected, ref names/folders
This commit is contained in:
Gabriel Edgardo Bazán 2017-10-10 10:29:47 -03:00 committed by GitHub
commit a364d215da
5 changed files with 39 additions and 14 deletions

View File

@ -25,7 +25,7 @@ import { CopayApp } from './app.component';
/* Pages */
import { AddPage } from '../pages/add/add';
import { SingleWalletPage } from '../pages/add/single-wallet/single-wallet';
import { SingleWalletPage } from '../pages/add/create-wallet/single-wallet/single-wallet';
import { BackupRequestPage } from '../pages/onboarding/backup-request/backup-request';
import { DisclaimerPage } from '../pages/onboarding/disclaimer/disclaimer';
import { EmailPage } from '../pages/onboarding/email/email';

View File

@ -1,6 +1,6 @@
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { SingleWalletPage } from "./single-wallet/single-wallet";
import { SingleWalletPage } from "./create-wallet/single-wallet/single-wallet";
@Component({
selector: 'page-add',

View File

@ -31,9 +31,14 @@
</ion-select>
</ion-item>
<ion-item *ngIf="formData.selectedSeed.id == 'set'">
<ion-label stacked>Wallet recovery phrase</ion-label>
<ion-input type="text" [(ngModel)]="formData.recoveryPhrase" formControlName="recoveryPhrase"></ion-input>
</ion-item>
<ion-item>
<ion-label stacked>Add a password</ion-label>
<ion-toggle [(ngModel)]="formData.addPassword" formControlName="addPassword" (ionChange)="resetPasswordFields()"></ion-toggle>
<ion-toggle [(ngModel)]="formData.addPassword" formControlName="addPassword" (ionChange)="resetFormFields()"></ion-toggle>
</ion-item>
<div *ngIf="formData.addPassword">
@ -55,13 +60,18 @@
<ion-item>
<ion-label stacked>I have written it down</ion-label>
<ion-checkbox [(ngModel)]="formData.writtenDown" formControlName="writtenDown" checked="false"></ion-checkbox>
<ion-checkbox [(ngModel)]="formData.recoveryPhraseBackedUp" formControlName="recoveryPhraseBackedUp" checked="false"></ion-checkbox>
</ion-item>
</div>
<ion-item>
<ion-item *ngIf="formData.selectedSeed.id == 'new'">
<ion-label stacked>Testnet</ion-label>
<ion-toggle [(ngModel)]="formData.testnet" formControlName="testnet"></ion-toggle>
<ion-toggle [(ngModel)]="formData.testnet" formControlName="testnet" (ionChange)="setDerivationPath()"></ion-toggle>
</ion-item>
<ion-item *ngIf="formData.selectedSeed.id == 'set'">
<ion-label stacked>Derivation path</ion-label>
<ion-input type="text" [(ngModel)]="formData.derivationPath" formControlName="derivationPath"></ion-input>
</ion-item>
<ion-item>

View File

@ -2,7 +2,7 @@ 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 { AppProvider } from '../../../../providers/app/app';
@Component({
selector: 'page-single-wallet',
@ -14,6 +14,8 @@ export class SingleWalletPage implements OnInit{
public seedOptions: any;
private appName: string;
private derivationPathByDefault: string;
private derivationPathForTestnet: string;
private createForm: FormGroup;
constructor(
@ -21,14 +23,18 @@ export class SingleWalletPage implements OnInit{
private app: AppProvider,
private fb: FormBuilder
) {
this.derivationPathByDefault = "m/44'/0'/0'";
this.derivationPathForTestnet = "m/44'/1'/0'";
this.showAdvOpts = false;
this.formData = {
walletName: null,
bwsURL: 'https://bws.bitpay.com/bws/api',
recoveryPhrase: null,
addPassword: false,
password: null,
confirmPassword: null,
writtenDown: false,
recoveryPhraseBackedUp: null,
derivationPath: this.derivationPathByDefault,
testnet: false,
singleAddress: false,
};
@ -41,10 +47,12 @@ export class SingleWalletPage implements OnInit{
walletName: ['', Validators.required],
bwsURL: [''],
selectedSeed: [''],
recoveryPhrase: [''],
addPassword: [''],
password: [''],
confirmPassword: [''],
writtenDown: ['false'],
recoveryPhraseBackedUp: [''],
derivationPath: [''],
testnet: [''],
singleAddress: [''],
});
@ -65,7 +73,7 @@ export class SingleWalletPage implements OnInit{
validatePasswords() {
if (this.formData.addPassword) {
if (this.formData.password == this.formData.confirmPassword) {
if (this.formData.writtenDown) return false;
if (this.formData.recoveryPhraseBackedUp) return false;
}
return true;
}
@ -79,7 +87,7 @@ export class SingleWalletPage implements OnInit{
supportsTestnet: true
}, {
id: 'set',
label: 'Specify Recovery Phrase...',
label: 'Specify Recovery Phrase',
supportsTestnet: false
}];
this.formData.selectedSeed = {
@ -118,13 +126,20 @@ export class SingleWalletPage implements OnInit{
seedOptionsChange(seed: any) {
this.formData.selectedSeed.id = seed;
this.resetPasswordFields();
this.formData.testnet = false;
this.formData.derivationPath = this.derivationPathByDefault;
this.resetFormFields();
}
resetPasswordFields() {
resetFormFields() {
this.formData.password = null;
this.formData.confirmPassword = null;
this.formData.writtenDown = false;
this.formData.recoveryPhraseBackedUp = null;
this.formData.recoveryPhrase = null;
}
setDerivationPath() {
this.formData.derivationPath = this.formData.testnet ? this.derivationPathForTestnet : this.derivationPathByDefault;
}
create() {