diff --git a/ui/src/app/app.component.html b/ui/src/app/app.component.html index 1f40cf842..af75999b2 100644 --- a/ui/src/app/app.component.html +++ b/ui/src/app/app.component.html @@ -92,11 +92,11 @@ - + + - diff --git a/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts b/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts index 39c703d72..c8f8af810 100644 --- a/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts +++ b/ui/src/app/pages/apps-routes/app-actions/app-actions.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { AppActionsPage } from './app-actions.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { QRComponentModule } from 'src/app/components/qr/qr.component.module' import { SharingModule } from 'src/app/modules/sharing.module' @@ -23,7 +20,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, QRComponentModule, SharingModule, ], diff --git a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html index 8acdc8f92..ac8df4d3a 100644 --- a/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html +++ b/ui/src/app/pages/apps-routes/app-actions/app-actions.page.html @@ -4,9 +4,6 @@ Actions - - - diff --git a/ui/src/app/pages/apps-routes/app-installed-list/app-installed-list.page.html b/ui/src/app/pages/apps-routes/app-installed-list/app-installed-list.page.html index bde43f504..4044bcf3f 100644 --- a/ui/src/app/pages/apps-routes/app-installed-list/app-installed-list.page.html +++ b/ui/src/app/pages/apps-routes/app-installed-list/app-installed-list.page.html @@ -27,7 +27,7 @@
- +
diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html index be5e2e923..6897264b3 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.html @@ -77,9 +77,8 @@ - - - Launch Web + + Launch Web Interface @@ -87,7 +86,7 @@ - Addresses +

Tor Address

@@ -107,7 +106,8 @@
- Backups + + @@ -124,12 +124,7 @@ Restore from Backup - General - - - - Check for Updates - + diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss index 20648cbcb..6e824f947 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.scss @@ -40,7 +40,11 @@ } .launch-button { - --border-width: 1px; + --background: rgb(70 193 255 / 75%); + --background-hover: rgb(70 193 255); + --background-hover-opacity: 100%; + --border-style: none; + --color: white; --border-radius: 10px; - margin: 10px; + margin: 12px 10px; } diff --git a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts index 642ceb9b1..25e8c7e0d 100644 --- a/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts +++ b/ui/src/app/pages/apps-routes/app-installed-show/app-installed-show.page.ts @@ -16,8 +16,6 @@ import { WizardBaker } from 'src/app/components/install-wizard/prebaked-wizards' import { catchError, concatMap, filter, switchMap, tap } from 'rxjs/operators' import { Cleanup } from 'src/app/util/cleanup' import { InformationPopoverComponent } from 'src/app/components/information-popover/information-popover.component' -import { Emver } from 'src/app/services/emver.service' -import { displayEmver } from 'src/app/pipes/emver.pipe' import { ConfigService } from 'src/app/services/config.service' @Component({ @@ -53,7 +51,6 @@ export class AppInstalledShowPage extends Cleanup { private readonly wizardBaker: WizardBaker, private readonly appModel: AppModel, private readonly popoverController: PopoverController, - private readonly emver: Emver, config: ConfigService, ) { super() @@ -109,56 +106,6 @@ export class AppInstalledShowPage extends Cleanup { return window.open(uiAddress, '_blank') } - async checkForUpdates () { - const app = peekProperties(this.app) - - this.loader.of({ - message: `Checking for updates...`, - spinner: 'lines', - cssClass: 'loader', - }).displayDuringAsync( - async () => { - const { versionLatest } = await this.apiService.getAvailableApp(this.appId) - if (this.emver.compare(versionLatest, app.versionInstalled) === 1) { - this.presentAlertUpdate(app, versionLatest) - } else { - this.presentAlertUpToDate() - } - }, - ).catch(e => this.setError(e)) - } - - async presentAlertUpdate (app: AppInstalledFull, versionLatest: string) { - const alert = await this.alertCtrl.create({ - backdropDismiss: false, - header: 'Update Available', - message: `New version ${displayEmver(versionLatest)} found for ${app.title}.`, - buttons: [ - { - text: 'Cancel', - role: 'cancel', - }, - { - text: 'View in Store', - cssClass: 'alert-success', - handler: () => { - this.navCtrl.navigateForward(['/services', 'marketplace', this.appId]) - }, - }, - ], - }) - await alert.present() - } - - async presentAlertUpToDate () { - const alert = await this.alertCtrl.create({ - header: 'Up To Date', - message: `You are running the latest version of ${this.app.title.getValue()}!`, - buttons: ['OK'], - }) - await alert.present() - } - async copyTor () { const app = peekProperties(this.app) let message = '' diff --git a/ui/src/app/pages/apps-routes/app-instructions/app-instructions.module.ts b/ui/src/app/pages/apps-routes/app-instructions/app-instructions.module.ts index c6e0276fa..1ebba6ab9 100644 --- a/ui/src/app/pages/apps-routes/app-instructions/app-instructions.module.ts +++ b/ui/src/app/pages/apps-routes/app-instructions/app-instructions.module.ts @@ -2,10 +2,8 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' import { IonicModule } from '@ionic/angular' - import { AppInstructionsPage } from './app-instructions.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { SharingModule } from 'src/app/modules/sharing.module' const routes: Routes = [ @@ -21,7 +19,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, SharingModule, ], declarations: [AppInstructionsPage], diff --git a/ui/src/app/pages/apps-routes/app-instructions/app-instructions.page.html b/ui/src/app/pages/apps-routes/app-instructions/app-instructions.page.html index 4929bd390..cbb338acd 100644 --- a/ui/src/app/pages/apps-routes/app-instructions/app-instructions.page.html +++ b/ui/src/app/pages/apps-routes/app-instructions/app-instructions.page.html @@ -4,9 +4,6 @@ Instructions - - - diff --git a/ui/src/app/pages/apps-routes/app-logs/app-logs.module.ts b/ui/src/app/pages/apps-routes/app-logs/app-logs.module.ts index 0dcc71571..d40377b13 100644 --- a/ui/src/app/pages/apps-routes/app-logs/app-logs.module.ts +++ b/ui/src/app/pages/apps-routes/app-logs/app-logs.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { AppLogsPage } from './app-logs.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -21,7 +18,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [AppLogsPage], }) diff --git a/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html b/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html index 629d8c2ec..f30dbb389 100644 --- a/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html +++ b/ui/src/app/pages/apps-routes/app-logs/app-logs.page.html @@ -8,7 +8,6 @@ - diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts index 9ea5ca66f..53ef3d727 100644 --- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts +++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { AppMetricsPage } from './app-metrics.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { QRComponentModule } from 'src/app/components/qr/qr.component.module' import { SharingModule } from 'src/app/modules/sharing.module' @@ -23,7 +20,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, QRComponentModule, SharingModule, ], diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html index 38f3b4b53..7f4c56860 100644 --- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html +++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html @@ -4,9 +4,6 @@ Properties - - - diff --git a/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.module.ts b/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.module.ts index 92529432c..db5c95d28 100644 --- a/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.module.ts +++ b/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.module.ts @@ -4,7 +4,6 @@ import { IonicModule } from '@ionic/angular' import { DevOptionsPage } from './dev-options.page' import { Routes, RouterModule } from '@angular/router' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { ObjectConfigComponentModule } from 'src/app/components/object-config/object-config.component.module' const routes: Routes = [ @@ -21,7 +20,6 @@ const routes: Routes = [ ObjectConfigComponentModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [DevOptionsPage], }) diff --git a/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.page.html b/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.page.html index f273221c5..4f0c04e90 100644 --- a/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.page.html +++ b/ui/src/app/pages/server-routes/developer-routes/dev-options/dev-options.page.html @@ -4,9 +4,6 @@ Developer Options - - - diff --git a/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.module.ts b/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.module.ts index a629bffe8..c576f1721 100644 --- a/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.module.ts +++ b/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.module.ts @@ -4,7 +4,6 @@ import { IonicModule } from '@ionic/angular' import { RouterModule, Routes } from '@angular/router' import { DevSSHKeysPage } from './dev-ssh-keys.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -19,7 +18,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [DevSSHKeysPage], }) diff --git a/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.page.html b/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.page.html index 9d1cad54b..2a67b3d0f 100644 --- a/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.page.html +++ b/ui/src/app/pages/server-routes/developer-routes/dev-ssh-keys/dev-ssh-keys.page.html @@ -4,9 +4,6 @@ SSH Keys - - - diff --git a/ui/src/app/pages/server-routes/external-drives/external-drives.module.ts b/ui/src/app/pages/server-routes/external-drives/external-drives.module.ts index 759d88481..c1e0f22a2 100644 --- a/ui/src/app/pages/server-routes/external-drives/external-drives.module.ts +++ b/ui/src/app/pages/server-routes/external-drives/external-drives.module.ts @@ -5,7 +5,6 @@ import { ExternalDrivesPage } from './external-drives.page' import { Routes, RouterModule } from '@angular/router' import { SharingModule } from 'src/app/modules/sharing.module' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { ObjectConfigComponentModule } from 'src/app/components/object-config/object-config.component.module' // TODO: EJECT-DISKS @@ -24,7 +23,6 @@ const routes: Routes = [ ObjectConfigComponentModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [ExternalDrivesPage], }) diff --git a/ui/src/app/pages/server-routes/external-drives/external-drives.page.html b/ui/src/app/pages/server-routes/external-drives/external-drives.page.html index ada072f1a..48eff6aaa 100644 --- a/ui/src/app/pages/server-routes/external-drives/external-drives.page.html +++ b/ui/src/app/pages/server-routes/external-drives/external-drives.page.html @@ -5,9 +5,6 @@ Backup drives - - - diff --git a/ui/src/app/pages/server-routes/lan/lan.module.ts b/ui/src/app/pages/server-routes/lan/lan.module.ts index f93ff781a..744334479 100644 --- a/ui/src/app/pages/server-routes/lan/lan.module.ts +++ b/ui/src/app/pages/server-routes/lan/lan.module.ts @@ -4,7 +4,6 @@ import { Routes, RouterModule } from '@angular/router' import { IonicModule } from '@ionic/angular' import { LANPage } from './lan.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { SharingModule } from 'src/app/modules/sharing.module' const routes: Routes = [ @@ -20,7 +19,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, SharingModule, ], declarations: [LANPage], diff --git a/ui/src/app/pages/server-routes/lan/lan.page.html b/ui/src/app/pages/server-routes/lan/lan.page.html index c8a245dcd..809b75fb1 100644 --- a/ui/src/app/pages/server-routes/lan/lan.page.html +++ b/ui/src/app/pages/server-routes/lan/lan.page.html @@ -1,8 +1,5 @@ - - - LAN Setup @@ -11,54 +8,60 @@ + - - - For a faster experience, you can also securely communicate with your Embassy by visiting its Local Area Network (LAN) address. + + + If you are having issues connecting to your Embassy or services over LAN, you can try refreshing the network by clicking the button below. - + + + + Refresh Network + + + + About + -

Instructions

- -
    -
  • Download your Embassy's SSL Certificate Authority by clicking the download button below.
  • -
  • Install and trust the CA.
  • -
  • Connect this device to the same network as the Embassy. This should be your private home network.
  • -
  • Navigate to your Embassy LAN address, indicated below.
  • -
-
-
-

-
- full documentation - full documentation - + You can connect to your Embassy over your Local Area Network (LAN). This can be useful for achieving a faster experience, as well as a fallback in case the Tor network is experiencing issues.
- - - + -

SSL Certificate

-

Embassy Local CA

+
- - -
- - - -

LAN Address

- {{ lanAddress }} -
- - - + + View Instructions + + + Certificate and Address + + + +

Root Certificate Authority

+

Embassy Local CA

+
+ + + +
+ + + +

LAN Address

+

{{ lanAddress }}

+
+ + + +
+
diff --git a/ui/src/app/pages/server-routes/lan/lan.page.scss b/ui/src/app/pages/server-routes/lan/lan.page.scss index e69de29bb..ae8a60ab4 100644 --- a/ui/src/app/pages/server-routes/lan/lan.page.scss +++ b/ui/src/app/pages/server-routes/lan/lan.page.scss @@ -0,0 +1,3 @@ +.tiny-icon { + font-size: 12px; +} \ No newline at end of file diff --git a/ui/src/app/pages/server-routes/lan/lan.page.ts b/ui/src/app/pages/server-routes/lan/lan.page.ts index 83f8e57ff..d098a201a 100644 --- a/ui/src/app/pages/server-routes/lan/lan.page.ts +++ b/ui/src/app/pages/server-routes/lan/lan.page.ts @@ -3,6 +3,8 @@ import { isPlatform, ToastController } from '@ionic/angular' import { ServerModel } from 'src/app/models/server-model' import { copyToClipboard } from 'src/app/util/web.util' import { ConfigService } from 'src/app/services/config.service' +import { LoaderService } from 'src/app/services/loader.service' +import { ApiService } from 'src/app/services/api/api.service' @Component({ selector: 'lan', @@ -20,13 +22,15 @@ export class LANPage { lanDisabled: LanSetupIssue = undefined readonly lanDisabledExplanation: { [k in LanSetupIssue]: string } = { NotDesktop: `We have detected you are on a mobile device. To setup LAN on a mobile device, use the Start9 Setup App.`, - NotTor: `We have detected you are not using a Tor connection. For security reasons, you must setup LAN over a Tor connection.

Navigate to your Embassy Tor Address and try again.`, + NotTor: `We have detected you are not using a Tor connection. For security reasons, you must setup LAN over a Tor connection. Please navigate to your Embassy Tor Address and try again.`, } constructor ( private readonly serverModel: ServerModel, private readonly toastCtrl: ToastController, private readonly config: ConfigService, + private readonly loader: LoaderService, + private readonly apiService: ApiService, ) { } ngOnInit () { @@ -48,7 +52,19 @@ export class LANPage { this.lanAddress = `https://${server.serverId}.local` } - async copyLAN (): Promise < void > { + async refreshLAN (): Promise { + this.loader.of({ + message: 'Refreshing Network', + spinner: 'lines', + cssClass: 'loader', + }).displayDuringAsync( async () => { + await this.apiService.refreshLAN() + }).catch(e => { + console.error(e) + }) + } + + async copyLAN (): Promise { const message = await copyToClipboard(this.lanAddress).then(success => success ? 'copied to clipboard!' : 'failed to copy') const toast = await this.toastCtrl.create({ diff --git a/ui/src/app/pages/server-routes/server-config/server-config.module.ts b/ui/src/app/pages/server-routes/server-config/server-config.module.ts index 3847521a3..a3fff0a49 100644 --- a/ui/src/app/pages/server-routes/server-config/server-config.module.ts +++ b/ui/src/app/pages/server-routes/server-config/server-config.module.ts @@ -5,7 +5,6 @@ import { ServerConfigPage } from './server-config.page' import { Routes, RouterModule } from '@angular/router' import { SharingModule } from 'src/app/modules/sharing.module' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { ObjectConfigComponentModule } from 'src/app/components/object-config/object-config.component.module' const routes: Routes = [ @@ -23,7 +22,6 @@ const routes: Routes = [ ObjectConfigComponentModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [ServerConfigPage], }) diff --git a/ui/src/app/pages/server-routes/server-config/server-config.page.html b/ui/src/app/pages/server-routes/server-config/server-config.page.html index b81429cf1..c22f93219 100644 --- a/ui/src/app/pages/server-routes/server-config/server-config.page.html +++ b/ui/src/app/pages/server-routes/server-config/server-config.page.html @@ -4,9 +4,6 @@ Config - - - diff --git a/ui/src/app/pages/server-routes/server-logs/server-logs.module.ts b/ui/src/app/pages/server-routes/server-logs/server-logs.module.ts index b2fa3dd6a..2640d0619 100644 --- a/ui/src/app/pages/server-routes/server-logs/server-logs.module.ts +++ b/ui/src/app/pages/server-routes/server-logs/server-logs.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { ServerLogsPage } from './server-logs.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -21,7 +18,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [ServerLogsPage], }) diff --git a/ui/src/app/pages/server-routes/server-logs/server-logs.page.html b/ui/src/app/pages/server-routes/server-logs/server-logs.page.html index d7e0ce0dd..bb2f1be61 100644 --- a/ui/src/app/pages/server-routes/server-logs/server-logs.page.html +++ b/ui/src/app/pages/server-routes/server-logs/server-logs.page.html @@ -8,7 +8,6 @@ - diff --git a/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts b/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts index d73633272..a15976226 100644 --- a/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts +++ b/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { ServerMetricsPage } from './server-metrics.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -21,7 +18,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [ServerMetricsPage], }) diff --git a/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html b/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html index 63f6fbbc1..302b23440 100644 --- a/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html +++ b/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html @@ -4,9 +4,6 @@ Metrics - - - diff --git a/ui/src/app/pages/server-routes/server-show/server-show.page.html b/ui/src/app/pages/server-routes/server-show/server-show.page.html index e13bd06be..4f5043db1 100644 --- a/ui/src/app/pages/server-routes/server-show/server-show.page.html +++ b/ui/src/app/pages/server-routes/server-show/server-show.page.html @@ -7,7 +7,7 @@ - +
@@ -28,14 +28,6 @@ - - - - - Check for Updates - - - @@ -52,6 +44,8 @@ Logs + + Config @@ -59,7 +53,7 @@ - LAN Setup + Connect over LAN @@ -67,6 +61,8 @@ WiFi Setup + + Developer Options diff --git a/ui/src/app/pages/server-routes/server-show/server-show.page.ts b/ui/src/app/pages/server-routes/server-show/server-show.page.ts index 7b34140f6..3275370f4 100644 --- a/ui/src/app/pages/server-routes/server-show/server-show.page.ts +++ b/ui/src/app/pages/server-routes/server-show/server-show.page.ts @@ -1,7 +1,7 @@ import { Component } from '@angular/core' import { LoadingOptions } from '@ionic/core' import { ServerModel, ServerStatus } from 'src/app/models/server-model' -import { AlertController, ModalController } from '@ionic/angular' +import { AlertController } from '@ionic/angular' import { S9Server } from 'src/app/models/server-model' import { ApiService } from 'src/app/services/api/api.service' import { SyncDaemon } from 'src/app/services/sync.service' @@ -9,9 +9,6 @@ import { Subscription, Observable } from 'rxjs' import { PropertySubject, toObservable } from 'src/app/util/property-subject.util' import { doForAtLeast } from 'src/app/util/misc.util' import { LoaderService } from 'src/app/services/loader.service' -import { Emver } from 'src/app/services/emver.service' -import { wizardModal } from 'src/app/components/install-wizard/install-wizard.component' -import { WizardBaker } from 'src/app/components/install-wizard/prebaked-wizards' @Component({ selector: 'server-show', @@ -36,9 +33,6 @@ export class ServerShowPage { private readonly loader: LoaderService, private readonly apiService: ApiService, private readonly syncDaemon: SyncDaemon, - private readonly emver: Emver, - private readonly modalCtrl: ModalController, - private readonly wizardBaker: WizardBaker, ) { } async ngOnInit () { @@ -82,55 +76,6 @@ export class ServerShowPage { } } - async checkForUpdates (): Promise { - const loader = await this.loader.ctrl.create(LoadingSpinner('Checking for updates...')) - await loader.present() - - try { - const { versionLatest, releaseNotes } = await this.apiService.getVersionLatest() - if (this.emver.compare(this.server.versionInstalled.getValue(), versionLatest) === -1) { - this.presentAlertUpdate(versionLatest, releaseNotes) - } else { - this.presentAlertUpToDate() - } - } catch (e) { - console.error(e) - this.error = e.message - } finally { - await loader.dismiss() - } - } - - async presentAlertUpToDate () { - const alert = await this.alertCtrl.create({ - header: 'Up To Date', - message: `You are running the latest version of EmbassyOS!`, - buttons: ['OK'], - }) - await alert.present() - } - - async presentAlertUpdate (versionLatest: string, releaseNotes: string) { - const alert = await this.alertCtrl.create({ - backdropDismiss: false, - header: 'Confirm', - message: `Update EmbassyOS to version ${versionLatest}?`, - buttons: [ - { - text: 'Cancel', - role: 'cancel', - }, - { - text: 'Update', - handler: () => { - this.updateEmbassyOS(versionLatest, releaseNotes) - }, - }, - ], - }) - await alert.present() - } - async presentAlertRestart () { const alert = await this.alertCtrl.create({ backdropDismiss: false, @@ -175,38 +120,24 @@ export class ServerShowPage { await alert.present() } - private async updateEmbassyOS (versionLatest: string, releaseNotes: string) { - const { cancelled } = await wizardModal( - this.modalCtrl, - this.wizardBaker.updateOS({ - version: versionLatest, - releaseNotes: releaseNotes, - }), - ) - if (cancelled) return - this.updatingFreeze = true - this.updating = true - setTimeout(() => this.updatingFreeze = false, 8000) - } - private async restart () { this.loader - .of(LoadingSpinner(`Restarting ${this.currentServer.name}...`)) - .displayDuringAsync( async () => { - this.serverModel.markUnreachable() - await this.apiService.restartServer() - }) - .catch(e => this.setError(e)) + .of(LoadingSpinner(`Restarting ${this.currentServer.name}...`)) + .displayDuringAsync( async () => { + this.serverModel.markUnreachable() + await this.apiService.restartServer() + }) + .catch(e => this.setError(e)) } private async shutdown () { this.loader - .of(LoadingSpinner(`Shutting down ${this.currentServer.name}...`)) - .displayDuringAsync( async () => { - this.serverModel.markUnreachable() - await this.apiService.shutdownServer() - }) - .catch(e => this.setError(e)) + .of(LoadingSpinner(`Shutting down ${this.currentServer.name}...`)) + .displayDuringAsync( async () => { + this.serverModel.markUnreachable() + await this.apiService.shutdownServer() + }) + .catch(e => this.setError(e)) } setError (e: Error) { diff --git a/ui/src/app/pages/server-routes/server-specs/server-specs.module.ts b/ui/src/app/pages/server-routes/server-specs/server-specs.module.ts index 82b2c8d59..cc8ab1182 100644 --- a/ui/src/app/pages/server-routes/server-specs/server-specs.module.ts +++ b/ui/src/app/pages/server-routes/server-specs/server-specs.module.ts @@ -1,12 +1,9 @@ import { NgModule } from '@angular/core' import { CommonModule } from '@angular/common' import { Routes, RouterModule } from '@angular/router' - import { IonicModule } from '@ionic/angular' - import { ServerSpecsPage } from './server-specs.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' import { SharingModule } from 'src/app/modules/sharing.module' const routes: Routes = [ @@ -22,7 +19,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, SharingModule, ], declarations: [ServerSpecsPage], diff --git a/ui/src/app/pages/server-routes/server-specs/server-specs.page.html b/ui/src/app/pages/server-routes/server-specs/server-specs.page.html index 5c86c800a..7963e3092 100644 --- a/ui/src/app/pages/server-routes/server-specs/server-specs.page.html +++ b/ui/src/app/pages/server-routes/server-specs/server-specs.page.html @@ -4,9 +4,6 @@ About - - - diff --git a/ui/src/app/pages/server-routes/server-specs/server-specs.page.ts b/ui/src/app/pages/server-routes/server-specs/server-specs.page.ts index 195e566c5..1d7213a1e 100644 --- a/ui/src/app/pages/server-routes/server-specs/server-specs.page.ts +++ b/ui/src/app/pages/server-routes/server-specs/server-specs.page.ts @@ -1,6 +1,5 @@ import { Component } from '@angular/core' import { S9Server } from 'src/app/models/server-model' - import { ToastController } from '@ionic/angular' import { copyToClipboard } from 'src/app/util/web.util' import { PropertySubject } from 'src/app/util/property-subject.util' diff --git a/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.module.ts b/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.module.ts index 5e89b88fb..61c0bded8 100644 --- a/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.module.ts +++ b/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.module.ts @@ -5,7 +5,6 @@ import { IonicModule } from '@ionic/angular' import { RouterModule, Routes } from '@angular/router' import { WifiAddPage } from './wifi-add.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -21,7 +20,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [WifiAddPage], }) diff --git a/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.page.html b/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.page.html index 1da17ffe7..0e2b6ace5 100644 --- a/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.page.html +++ b/ui/src/app/pages/server-routes/wifi/wifi-add/wifi-add.page.html @@ -4,9 +4,6 @@ Add Network - - - @@ -38,12 +35,12 @@ - Add + Save for Later - - Add and Connect + + Save and Connect Now diff --git a/ui/src/app/pages/server-routes/wifi/wifi.module.ts b/ui/src/app/pages/server-routes/wifi/wifi.module.ts index ffd503c52..0fe99daed 100644 --- a/ui/src/app/pages/server-routes/wifi/wifi.module.ts +++ b/ui/src/app/pages/server-routes/wifi/wifi.module.ts @@ -4,7 +4,6 @@ import { IonicModule } from '@ionic/angular' import { RouterModule, Routes } from '@angular/router' import { WifiListPage } from './wifi.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' const routes: Routes = [ { @@ -23,7 +22,6 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - BadgeMenuComponentModule, ], declarations: [WifiListPage], }) diff --git a/ui/src/app/pages/server-routes/wifi/wifi.page.html b/ui/src/app/pages/server-routes/wifi/wifi.page.html index 3d6b9a3d2..483fc37bc 100644 --- a/ui/src/app/pages/server-routes/wifi/wifi.page.html +++ b/ui/src/app/pages/server-routes/wifi/wifi.page.html @@ -4,9 +4,6 @@ WiFi Setup - - - @@ -23,10 +20,13 @@ + By providing your Embassy with WiFi credentials for one or more networks, you can remove the Ethernet cable and place your Embassy anywhere. +
+
Warning!

- Making changes to WiFi can cause your Embassy and its Services to become unreachable for a few minutes to an hour. Please be patient. + Connecting, disconnecting, or changing WiFi networks can cause your Embassy and its services to become unreachable for up to an hour. Please be patient.
diff --git a/ui/src/app/services/api/api.service.ts b/ui/src/app/services/api/api.service.ts index 82b60d990..03ed77830 100644 --- a/ui/src/app/services/api/api.service.ts +++ b/ui/src/app/services/api/api.service.ts @@ -63,6 +63,7 @@ export abstract class ApiService { abstract shutdownServer (): Promise abstract ejectExternalDisk (logicalName: string): Promise abstract serviceAction (appId: string, serviceAction: ServiceAction): Promise + abstract refreshLAN (): Promise } export function isRpcFailure (arg: { error: Error } | { result: Result}): arg is { error: Error } { diff --git a/ui/src/app/services/api/live-api.service.ts b/ui/src/app/services/api/live-api.service.ts index 24dc01453..4716afa71 100644 --- a/ui/src/app/services/api/live-api.service.ts +++ b/ui/src/app/services/api/live-api.service.ts @@ -13,6 +13,7 @@ import { modulateTime } from 'src/app/util/misc.util' import { Observable, of, throwError } from 'rxjs' import { catchError, mapTo } from 'rxjs/operators' import * as uuid from 'uuid' +import { METHODS } from 'http' @Injectable() export class LiveApiService extends ApiService { @@ -276,6 +277,10 @@ export class LiveApiService extends ApiService { return this.authRequest({ method: Method.POST, url: `apps/${appId}/actions`, data }) } + async refreshLAN (): Promise { + return this.authRequest({ method: Method.POST, url: '/network/lan/reset' }) + } + private async authRequest (opts: HttpOptions, overrides: Partial<{ version: string }> = { }): Promise { if (!this.authenticatedRequestsEnabled) throw new Error(`Authenticated requests are not enabled. Do you need to login?`) diff --git a/ui/src/app/services/api/mock-api.service.ts b/ui/src/app/services/api/mock-api.service.ts index 63c8c613d..373929e34 100644 --- a/ui/src/app/services/api/mock-api.service.ts +++ b/ui/src/app/services/api/mock-api.service.ts @@ -242,6 +242,10 @@ export class MockApiService extends ApiService { }, } } + + refreshLAN (): Promise { + return mockRefreshLAN() + } } async function mockGetServer (): Promise { @@ -406,6 +410,11 @@ async function mockShutdownServer (): Promise { return { } } +async function mockRefreshLAN (): Promise { + await pauseFor(1000) + return { } +} + const mockApiNotifications: ReqRes.GetNotificationsRes = [ { id: '123e4567-e89b-12d3-a456-426655440000', diff --git a/ui/src/global.scss b/ui/src/global.scss index a25fdd886..6c3eada49 100644 --- a/ui/src/global.scss +++ b/ui/src/global.scss @@ -302,7 +302,6 @@ ion-avatar { } ion-item-divider { - margin-top: 15px; color: var(--ion-color-medium); font-size: medium; padding-left: 10px;