mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-03-31 04:23:40 +00:00
warning for reconnect
This commit is contained in:
committed by
Aiden McClelland
parent
eaffa8e53c
commit
78065e7f95
@@ -39,8 +39,22 @@ export class EmbassyPage {
|
|||||||
|
|
||||||
async getDrives () {
|
async getDrives () {
|
||||||
try {
|
try {
|
||||||
const drives = await this.apiService.getDrives()
|
const { disks, reconnect } = await this.apiService.getDrives()
|
||||||
this.storageDrives = drives.filter(d => !d.partitions.map(p => p.logicalname).includes((this.stateService.recoverySource as DiskRecoverySource)?.logicalname))
|
this.storageDrives = disks.filter(d => !d.partitions.map(p => p.logicalname).includes((this.stateService.recoverySource as DiskRecoverySource)?.logicalname))
|
||||||
|
if (!this.storageDrives.length && reconnect.length) {
|
||||||
|
const list = `<ul>${reconnect.map(recon => `<li>${recon}</li>`)}</ul>`
|
||||||
|
const alert = await this.alertCtrl.create({
|
||||||
|
header: 'Warning',
|
||||||
|
message: `One or more devices you connected had to be reconfigured to support the current hardware platform. Please unplug and replug in the following device(s):<br> ${list}`,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
role: 'cancel',
|
||||||
|
text: 'OK',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
await alert.present()
|
||||||
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
this.errorToastService.present(e.message)
|
this.errorToastService.present(e.message)
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ export class RecoverPage {
|
|||||||
async getDrives () {
|
async getDrives () {
|
||||||
this.mappedDrives = []
|
this.mappedDrives = []
|
||||||
try {
|
try {
|
||||||
const drives = await this.apiService.getDrives()
|
const { disks, reconnect } = await this.apiService.getDrives()
|
||||||
drives.filter(d => d.partitions.length).forEach(d => {
|
disks.filter(d => d.partitions.length).forEach(d => {
|
||||||
d.partitions.forEach(p => {
|
d.partitions.forEach(p => {
|
||||||
const drive: DiskBackupTarget = {
|
const drive: DiskBackupTarget = {
|
||||||
vendor: d.vendor,
|
vendor: d.vendor,
|
||||||
@@ -66,7 +66,22 @@ export class RecoverPage {
|
|||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
const importableDrive = drives.find(d => !!d.guid)
|
if (!this.mappedDrives.length && reconnect.length) {
|
||||||
|
const list = `<ul>${reconnect.map(recon => `<li>${recon}</li>`)}</ul>`
|
||||||
|
const alert = await this.alertCtrl.create({
|
||||||
|
header: 'Warning',
|
||||||
|
message: `One or more devices you connected had to be reconfigured to support the current hardware platform. Please unplug and replug in the following device(s):<br> ${list}`,
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
role: 'cancel',
|
||||||
|
text: 'OK',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
})
|
||||||
|
await alert.present()
|
||||||
|
}
|
||||||
|
|
||||||
|
const importableDrive = disks.find(d => !!d.guid)
|
||||||
if (!!importableDrive && !this.hasShownGuidAlert) {
|
if (!!importableDrive && !this.hasShownGuidAlert) {
|
||||||
const alert = await this.alertCtrl.create({
|
const alert = await this.alertCtrl.create({
|
||||||
header: 'Embassy Drive Detected',
|
header: 'Embassy Drive Detected',
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
export abstract class ApiService {
|
export abstract class ApiService {
|
||||||
// unencrypted
|
// unencrypted
|
||||||
abstract getStatus (): Promise<GetStatusRes> // setup.status
|
abstract getStatus (): Promise<GetStatusRes> // setup.status
|
||||||
abstract getDrives (): Promise<DiskInfo[]> // setup.disk.list
|
abstract getDrives (): Promise<DiskListResponse> // setup.disk.list
|
||||||
abstract set02XDrive (logicalname: string): Promise<void> // setup.recovery.v2.set
|
abstract set02XDrive (logicalname: string): Promise<void> // setup.recovery.v2.set
|
||||||
abstract getRecoveryStatus (): Promise<RecoveryStatusRes> // setup.recovery.status
|
abstract getRecoveryStatus (): Promise<RecoveryStatusRes> // setup.recovery.status
|
||||||
|
|
||||||
@@ -38,6 +38,11 @@ export interface EmbassyOSRecoveryInfo {
|
|||||||
'wrapped-key': string | null
|
'wrapped-key': string | null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface DiskListResponse {
|
||||||
|
disks: DiskInfo[]
|
||||||
|
reconnect: string[]
|
||||||
|
}
|
||||||
|
|
||||||
export interface DiskBackupTarget {
|
export interface DiskBackupTarget {
|
||||||
vendor: string | null
|
vendor: string | null
|
||||||
model: string | null
|
model: string | null
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Injectable } from '@angular/core'
|
import { Injectable } from '@angular/core'
|
||||||
import { ApiService, CifsRecoverySource, DiskInfo, DiskRecoverySource, EmbassyOSRecoveryInfo, GetStatusRes, RecoveryStatusRes, SetupEmbassyReq, SetupEmbassyRes } from './api.service'
|
import { ApiService, CifsRecoverySource, DiskInfo, DiskListResponse, DiskRecoverySource, EmbassyOSRecoveryInfo, GetStatusRes, RecoveryStatusRes, SetupEmbassyReq, SetupEmbassyRes } from './api.service'
|
||||||
import { HttpService } from './http.service'
|
import { HttpService } from './http.service'
|
||||||
|
|
||||||
@Injectable({
|
@Injectable({
|
||||||
@@ -21,7 +21,7 @@ export class LiveApiService extends ApiService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async getDrives () {
|
async getDrives () {
|
||||||
return this.http.rpcRequest<DiskInfo[]>({
|
return this.http.rpcRequest<DiskListResponse>({
|
||||||
method: 'setup.disk.list',
|
method: 'setup.disk.list',
|
||||||
params: { },
|
params: { },
|
||||||
}, false)
|
}, false)
|
||||||
|
|||||||
@@ -25,106 +25,10 @@ export class MockApiService extends ApiService {
|
|||||||
|
|
||||||
async getDrives () {
|
async getDrives () {
|
||||||
await pauseFor(1000)
|
await pauseFor(1000)
|
||||||
return [
|
return {
|
||||||
{
|
disks: [],
|
||||||
vendor: 'Samsung',
|
reconnect: ['yolo'],
|
||||||
model: 'SATA',
|
}
|
||||||
logicalname: '/dev/sda',
|
|
||||||
guid: 'theguid',
|
|
||||||
partitions: [
|
|
||||||
{
|
|
||||||
logicalname: 'sda1',
|
|
||||||
label: 'label 1',
|
|
||||||
capacity: 100000,
|
|
||||||
used: 200.1255312,
|
|
||||||
'embassy-os': null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
logicalname: 'sda2',
|
|
||||||
label: 'label 2',
|
|
||||||
capacity: 50000,
|
|
||||||
used: 200.1255312,
|
|
||||||
'embassy-os': null,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
capacity: 150000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
vendor: 'Samsung',
|
|
||||||
model: null,
|
|
||||||
logicalname: 'dev/sdb',
|
|
||||||
partitions: [],
|
|
||||||
capacity: 34359738369,
|
|
||||||
guid: null,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
vendor: 'Crucial',
|
|
||||||
model: 'MX500',
|
|
||||||
logicalname: 'dev/sdc',
|
|
||||||
guid: null,
|
|
||||||
partitions: [
|
|
||||||
{
|
|
||||||
logicalname: 'sdc1',
|
|
||||||
label: 'label 1',
|
|
||||||
capacity: 0,
|
|
||||||
used: null,
|
|
||||||
'embassy-os': {
|
|
||||||
version: '0.3.3',
|
|
||||||
full: true,
|
|
||||||
'password-hash': 'asdfasdfasdf',
|
|
||||||
'wrapped-key': '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
logicalname: 'sdc1MOCKTESTER',
|
|
||||||
label: 'label 1',
|
|
||||||
capacity: 0,
|
|
||||||
used: null,
|
|
||||||
'embassy-os': {
|
|
||||||
version: '0.3.6',
|
|
||||||
full: true,
|
|
||||||
// password is 'asdfasdf'
|
|
||||||
'password-hash': '$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
|
||||||
'wrapped-key': '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
logicalname: 'sdc1',
|
|
||||||
label: 'label 1',
|
|
||||||
capacity: 0,
|
|
||||||
used: null,
|
|
||||||
'embassy-os': {
|
|
||||||
version: '0.3.3',
|
|
||||||
full: false,
|
|
||||||
'password-hash': 'asdfasdfasdf',
|
|
||||||
'wrapped-key': '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
capacity: 100000,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
vendor: 'Sandisk',
|
|
||||||
model: null,
|
|
||||||
logicalname: '/dev/sdd',
|
|
||||||
guid: null,
|
|
||||||
partitions: [
|
|
||||||
{
|
|
||||||
logicalname: 'sdd1',
|
|
||||||
label: null,
|
|
||||||
capacity: 10000,
|
|
||||||
used: null,
|
|
||||||
'embassy-os': {
|
|
||||||
version: '0.2.7',
|
|
||||||
full: true,
|
|
||||||
'password-hash': 'asdfasdfasdf',
|
|
||||||
'wrapped-key': '',
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
capacity: 10000,
|
|
||||||
},
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async set02XDrive () {
|
async set02XDrive () {
|
||||||
@@ -202,3 +106,104 @@ const setupRes = {
|
|||||||
'lan-address': 'https://embassy-abcdefgh.local',
|
'lan-address': 'https://embassy-abcdefgh.local',
|
||||||
'root-ca': btoa(rootCA),
|
'root-ca': btoa(rootCA),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const disks = [
|
||||||
|
{
|
||||||
|
vendor: 'Samsung',
|
||||||
|
model: 'SATA',
|
||||||
|
logicalname: '/dev/sda',
|
||||||
|
guid: 'theguid',
|
||||||
|
partitions: [
|
||||||
|
{
|
||||||
|
logicalname: 'sda1',
|
||||||
|
label: 'label 1',
|
||||||
|
capacity: 100000,
|
||||||
|
used: 200.1255312,
|
||||||
|
'embassy-os': null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
logicalname: 'sda2',
|
||||||
|
label: 'label 2',
|
||||||
|
capacity: 50000,
|
||||||
|
used: 200.1255312,
|
||||||
|
'embassy-os': null,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
capacity: 150000,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
vendor: 'Samsung',
|
||||||
|
model: null,
|
||||||
|
logicalname: 'dev/sdb',
|
||||||
|
partitions: [],
|
||||||
|
capacity: 34359738369,
|
||||||
|
guid: null,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
vendor: 'Crucial',
|
||||||
|
model: 'MX500',
|
||||||
|
logicalname: 'dev/sdc',
|
||||||
|
guid: null,
|
||||||
|
partitions: [
|
||||||
|
{
|
||||||
|
logicalname: 'sdc1',
|
||||||
|
label: 'label 1',
|
||||||
|
capacity: 0,
|
||||||
|
used: null,
|
||||||
|
'embassy-os': {
|
||||||
|
version: '0.3.3',
|
||||||
|
full: true,
|
||||||
|
'password-hash': 'asdfasdfasdf',
|
||||||
|
'wrapped-key': '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
logicalname: 'sdc1MOCKTESTER',
|
||||||
|
label: 'label 1',
|
||||||
|
capacity: 0,
|
||||||
|
used: null,
|
||||||
|
'embassy-os': {
|
||||||
|
version: '0.3.6',
|
||||||
|
full: true,
|
||||||
|
// password is 'asdfasdf'
|
||||||
|
'password-hash': '$argon2d$v=19$m=1024,t=1,p=1$YXNkZmFzZGZhc2RmYXNkZg$Ceev1I901G6UwU+hY0sHrFZ56D+o+LNJ',
|
||||||
|
'wrapped-key': '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
logicalname: 'sdc1',
|
||||||
|
label: 'label 1',
|
||||||
|
capacity: 0,
|
||||||
|
used: null,
|
||||||
|
'embassy-os': {
|
||||||
|
version: '0.3.3',
|
||||||
|
full: false,
|
||||||
|
'password-hash': 'asdfasdfasdf',
|
||||||
|
'wrapped-key': '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
capacity: 100000,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
vendor: 'Sandisk',
|
||||||
|
model: null,
|
||||||
|
logicalname: '/dev/sdd',
|
||||||
|
guid: null,
|
||||||
|
partitions: [
|
||||||
|
{
|
||||||
|
logicalname: 'sdd1',
|
||||||
|
label: null,
|
||||||
|
capacity: 10000,
|
||||||
|
used: null,
|
||||||
|
'embassy-os': {
|
||||||
|
version: '0.2.7',
|
||||||
|
full: true,
|
||||||
|
'password-hash': 'asdfasdfasdf',
|
||||||
|
'wrapped-key': '',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
capacity: 10000,
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user