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 */ /* Pages */
import { AddPage } from '../pages/add/add'; 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 { BackupRequestPage } from '../pages/onboarding/backup-request/backup-request';
import { DisclaimerPage } from '../pages/onboarding/disclaimer/disclaimer'; import { DisclaimerPage } from '../pages/onboarding/disclaimer/disclaimer';
import { EmailPage } from '../pages/onboarding/email/email'; import { EmailPage } from '../pages/onboarding/email/email';

View File

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

View File

@ -31,9 +31,14 @@
</ion-select> </ion-select>
</ion-item> </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-item>
<ion-label stacked>Add a password</ion-label> <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> </ion-item>
<div *ngIf="formData.addPassword"> <div *ngIf="formData.addPassword">
@ -55,13 +60,18 @@
<ion-item> <ion-item>
<ion-label stacked>I have written it down</ion-label> <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> </ion-item>
</div> </div>
<ion-item> <ion-item *ngIf="formData.selectedSeed.id == 'new'">
<ion-label stacked>Testnet</ion-label> <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>
<ion-item> <ion-item>

View File

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