+
Enter Password
Password:
-
+
+
Create Password
Password:
Verify Password:
{{error}}
+
Cancel
Submit
diff --git a/setup-wizard/src/app/pages/password/password.page.ts b/setup-wizard/src/app/pages/password/password.page.ts
index 484d111f0..051f0477c 100644
--- a/setup-wizard/src/app/pages/password/password.page.ts
+++ b/setup-wizard/src/app/pages/password/password.page.ts
@@ -1,6 +1,5 @@
-import { Component } from '@angular/core'
-import { ApiService } from 'src/app/services/api/api.service'
-import { StateService } from 'src/app/services/state.service'
+import { Component, Input } from '@angular/core'
+import { ModalController } from '@ionic/angular'
@Component({
selector: 'password',
@@ -8,24 +7,40 @@ import { StateService } from 'src/app/services/state.service'
styleUrls: ['password.page.scss'],
})
export class PasswordPage {
+ @Input() version: string | null
+
+ needsVer = true
+
error = ''
password = ''
passwordVer = ''
constructor(
- private readonly apiService: ApiService,
- private readonly stateService: StateService,
+ private modalController: ModalController
) {}
+ ngOnInit() {
+ this.needsVer = !this.version?.startsWith('0.3')
+ console.log('needs', this.needsVer)
+ }
+
async submitPassword () {
- if (!this.stateService.recoveryDrive && this.password !== this.passwordVer) {
- console.log('here')
+ if (this.needsVer && this.password !== this.passwordVer) {
this.error="*passwords dont match"
} else {
- console.log('submitting')
- await this.apiService.submitPassword(this.password)
- // @Todo navigate to embassy os
+ this.dismiss(true)
}
}
+ cancel () {
+ this.dismiss(false)
+ }
+
+ dismiss(submitted: boolean) {
+ this.modalController.dismiss({
+ pwValid: submitted,
+ pw: this.password
+ });
+ }
+
}
diff --git a/setup-wizard/src/app/pages/recover/recover.page.html b/setup-wizard/src/app/pages/recover/recover.page.html
index 8680113ce..b7a6d1c9e 100644
--- a/setup-wizard/src/app/pages/recover/recover.page.html
+++ b/setup-wizard/src/app/pages/recover/recover.page.html
@@ -10,7 +10,7 @@
Select Data Drive
Progress: {{ 100 * stateService.dataProgress }}%
- Next
+ Go To Embassy
diff --git a/setup-wizard/src/app/pages/recover/recover.page.ts b/setup-wizard/src/app/pages/recover/recover.page.ts
index f1a76f6af..730e0a412 100644
--- a/setup-wizard/src/app/pages/recover/recover.page.ts
+++ b/setup-wizard/src/app/pages/recover/recover.page.ts
@@ -1,7 +1,8 @@
import { Component } from '@angular/core'
-import { AlertController } from '@ionic/angular'
-import { ApiService } from 'src/app/services/api/api.service'
+import { AlertController, ModalController } from '@ionic/angular'
+import { ApiService, EmbassyDrive } from 'src/app/services/api/api.service'
import { StateService } from 'src/app/services/state.service'
+import { PasswordPage } from '../password/password.page'
@Component({
selector: 'recover',
@@ -11,11 +12,13 @@ import { StateService } from 'src/app/services/state.service'
export class RecoverPage {
dataDrives = []
selectedDrive = null
+ selectedVersion = null
constructor(
private readonly apiService: ApiService,
private readonly stateService: StateService,
public alertController: AlertController,
+ private modalController: ModalController,
) {}
async ngOnInit() {
@@ -26,11 +29,15 @@ export class RecoverPage {
}
}
- selectDrive(name: string) {
+ selectDrive(disk: EmbassyDrive) {
+ const name = disk['logical-name']
+ const version = disk.version
if (name === this.selectedDrive) {
this.selectedDrive = null
+ this.selectedVersion = null
} else {
this.selectedDrive = name
+ this.selectedVersion = version
}
}
@@ -60,9 +67,33 @@ export class RecoverPage {
}
async chooseDisk() {
- await this.apiService.selectEmbassyDrive({logicalName: this.selectedDrive})
+ this.presentPasswordModal()
+ }
+
+ async presentPasswordModal() {
+ const modal = await this.modalController.create({
+ component: PasswordPage,
+ backdropDismiss: false,
+ componentProps: {
+ 'version': this.selectedVersion,
+ }
+ })
+ modal.onDidDismiss().then(ret => {
+ if(ret.data.pwValid) {
+ this.submitPWAndDisk(ret.data.password)
+ }
+ })
+ await modal.present();
+ }
+
+ async submitPWAndDisk(pw: string) {
+ await this.apiService.selectEmbassyDrive({logicalName: this.selectedDrive}, pw)
this.stateService.recoveryDrive = this.selectedDrive
this.stateService.pollDataTransferProgress()
}
+ async navToEmbassy() {
+ // @TODO nav to embassy
+ }
+
}
diff --git a/setup-wizard/src/app/services/api/api.service.ts b/setup-wizard/src/app/services/api/api.service.ts
index 446b52d13..c9a77ce00 100644
--- a/setup-wizard/src/app/services/api/api.service.ts
+++ b/setup-wizard/src/app/services/api/api.service.ts
@@ -7,7 +7,7 @@ export abstract class ApiService {
abstract getStorageDisks (): Promise
abstract selectStorageDisk (disk: { logicalName: string }): Promise
abstract getEmbassyDrives (): Promise
- abstract selectEmbassyDrive (disk: { logicalName: string }): Promise
+ abstract selectEmbassyDrive (disk: { logicalName: string }, password: string): Promise
abstract getDataTransferProgress () : Promise
abstract submitPassword (password: string) : Promise
}
diff --git a/setup-wizard/src/app/services/api/mock-api.service.ts b/setup-wizard/src/app/services/api/mock-api.service.ts
index 3177945f9..ac154acd5 100644
--- a/setup-wizard/src/app/services/api/mock-api.service.ts
+++ b/setup-wizard/src/app/services/api/mock-api.service.ts
@@ -12,9 +12,8 @@ export class MockApiService extends ApiService {
}
async getState () {
- await pauseFor(2000)
return {
- 'selected-data-drive': null,
+ 'selected-data-drive': 'page1',
'recovery-drive': null,
'has-password': false,
'data-transfer-progress': null
@@ -74,4 +73,4 @@ export class MockApiService extends ApiService {
}
}
-let tries = 4
\ No newline at end of file
+let tries = 2
\ No newline at end of file