From 6300fc53642fa801b68055010da10b0b91c27b65 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Mon, 19 Dec 2022 13:42:05 -0700 Subject: [PATCH] UI multiple bug fixes (#2072) * fixes #2071 #2068 * closes #2070 * closes #2046 * fixes #2074 * closes #2045 * closes #2077. Use LAN address instead of IP when opening https --- .../src/app/pages/success/success.page.ts | 2 +- .../form-object/form-object.component.html | 6 +- .../store-icon/store-icon.component.html | 9 +- .../store-icon/store-icon.component.ts | 1 + .../marketplace-settings.page.html | 6 +- .../apps-routes/app-show/app-show.page.ts | 6 +- .../marketplace-list.page.html | 6 +- .../marketplace-list.page.scss | 3 +- .../notifications/notifications.page.html | 7 +- .../server-show/server-show.page.ts | 6 +- .../src/app/pages/updates/updates.module.ts | 8 +- .../src/app/pages/updates/updates.page.html | 123 ++++++++++-------- .../src/app/pages/updates/updates.page.scss | 19 +-- .../ui/src/app/pages/updates/updates.page.ts | 31 ++--- .../services/api/embassy-mock-api.service.ts | 3 +- .../src/app/services/marketplace.service.ts | 2 + 16 files changed, 135 insertions(+), 103 deletions(-) diff --git a/frontend/projects/setup-wizard/src/app/pages/success/success.page.ts b/frontend/projects/setup-wizard/src/app/pages/success/success.page.ts index 779ea3cef..ac28bf3f2 100644 --- a/frontend/projects/setup-wizard/src/app/pages/success/success.page.ts +++ b/frontend/projects/setup-wizard/src/app/pages/success/success.page.ts @@ -34,7 +34,7 @@ export class SuccessPage { fadeFactor = 0.07 columns: any[] = [] maxStackHeight: any - disableLogin = true + disableLogin = this.stateService.setupType === 'fresh' constructor( @Inject(DOCUMENT) private readonly document: Document, diff --git a/frontend/projects/ui/src/app/components/form-object/form-object.component.html b/frontend/projects/ui/src/app/components/form-object/form-object.component.html index ccbd81a20..0c1763a9a 100644 --- a/frontend/projects/ui/src/app/components/form-object/form-object.component.html +++ b/frontend/projects/ui/src/app/components/form-object/form-object.component.html @@ -134,15 +134,15 @@ {{ spec.name }} - - (Edited) (New) + + (Edited) diff --git a/frontend/projects/ui/src/app/components/store-icon/store-icon.component.html b/frontend/projects/ui/src/app/components/store-icon/store-icon.component.html index 531bd4a64..43ecb41a1 100644 --- a/frontend/projects/ui/src/app/components/store-icon/store-icon.component.html +++ b/frontend/projects/ui/src/app/components/store-icon/store-icon.component.html @@ -1,4 +1,9 @@ - + - + diff --git a/frontend/projects/ui/src/app/components/store-icon/store-icon.component.ts b/frontend/projects/ui/src/app/components/store-icon/store-icon.component.ts index 0848e28fc..16d12ed6e 100644 --- a/frontend/projects/ui/src/app/components/store-icon/store-icon.component.ts +++ b/frontend/projects/ui/src/app/components/store-icon/store-icon.component.ts @@ -16,6 +16,7 @@ import { sameUrl } from '@start9labs/shared' }) export class StoreIconComponent { @Input() url: string = '' + @Input() size?: string } @Pipe({ diff --git a/frontend/projects/ui/src/app/modals/marketplace-settings/marketplace-settings.page.html b/frontend/projects/ui/src/app/modals/marketplace-settings/marketplace-settings.page.html index e9740416f..663b022cd 100644 --- a/frontend/projects/ui/src/app/modals/marketplace-settings/marketplace-settings.page.html +++ b/frontend/projects/ui/src/app/modals/marketplace-settings/marketplace-settings.page.html @@ -50,11 +50,7 @@ [button]="!a.selected" (click)="a.selected ? '' : presentAction(a, true)" > - +

{{ a.name }}

{{ a.url }}

diff --git a/frontend/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts b/frontend/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts index dabb413ff..346be96b3 100644 --- a/frontend/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts +++ b/frontend/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts @@ -15,6 +15,7 @@ import { ActivatedRoute } from '@angular/router' import { getPkgId } from '@start9labs/shared' import { DOCUMENT } from '@angular/common' import { ConfigService } from 'src/app/services/config.service' +import { getServerInfo } from 'src/app/util/get-server-info' const STATES = [ PackageState.Installing, @@ -63,7 +64,8 @@ export class AppShowPage { return STATES.includes(state) } - launchHttps() { - window.open(this.document.location.href.replace('http', 'https')) + async launchHttps() { + const { 'lan-address': lanAddress } = await getServerInfo(this.patch) + window.open(lanAddress) } } diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html index ea8d4a75a..41b4adced 100644 --- a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html +++ b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.html @@ -23,7 +23,11 @@
- +

{{ details.name }}

diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.scss b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.scss index b45f5a6c4..df947e148 100644 --- a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.scss +++ b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.scss @@ -8,8 +8,7 @@ .icon { display: inline-block; - max-width: 80px; - font-size: 80px; + margin-bottom: 14px; } .divider { diff --git a/frontend/projects/ui/src/app/pages/notifications/notifications.page.html b/frontend/projects/ui/src/app/pages/notifications/notifications.page.html index 7931bc8d8..144cf1a55 100644 --- a/frontend/projects/ui/src/app/pages/notifications/notifications.page.html +++ b/frontend/projects/ui/src/app/pages/notifications/notifications.page.html @@ -56,10 +56,13 @@ " > -

Inbox Empty

+

+ Important system alerts and notifications from your Embassy will + display here +

diff --git a/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts b/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts index 7451fc516..9ad51606f 100644 --- a/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts +++ b/frontend/projects/ui/src/app/pages/server-routes/server-show/server-show.page.ts @@ -24,6 +24,7 @@ import { } from 'src/app/modals/generic-input/generic-input.component' import { ConfigService } from 'src/app/services/config.service' import { DOCUMENT } from '@angular/common' +import { getServerInfo } from 'src/app/util/get-server-info' @Component({ selector: 'server-show', @@ -208,8 +209,9 @@ export class ServerShowPage { await alert.present() } - launchHttps() { - window.open(this.document.location.href.replace('http', 'https')) + async launchHttps() { + const { 'lan-address': lanAddress } = await getServerInfo(this.patch) + window.open(lanAddress) } addClick(title: string) { diff --git a/frontend/projects/ui/src/app/pages/updates/updates.module.ts b/frontend/projects/ui/src/app/pages/updates/updates.module.ts index 6ff7718aa..e425bc94a 100644 --- a/frontend/projects/ui/src/app/pages/updates/updates.module.ts +++ b/frontend/projects/ui/src/app/pages/updates/updates.module.ts @@ -4,7 +4,12 @@ import { IonicModule } from '@ionic/angular' import { RouterModule, Routes } from '@angular/router' import { FilterUpdatesPipe, UpdatesPage } from './updates.page' import { BadgeMenuComponentModule } from 'src/app/components/badge-menu-button/badge-menu.component.module' -import { MarkdownPipeModule, SharedPipesModule } from '@start9labs/shared' +import { + EmverDisplayPipe, + EmverPipesModule, + MarkdownPipeModule, + SharedPipesModule, +} from '@start9labs/shared' import { SkeletonListComponentModule } from 'src/app/components/skeleton-list/skeleton-list.component.module' import { RoundProgressModule } from 'angular-svg-round-progressbar' import { InstallProgressPipeModule } from 'src/app/pipes/install-progress/install-progress.module' @@ -29,6 +34,7 @@ const routes: Routes = [ RoundProgressModule, InstallProgressPipeModule, StoreIconComponentModule, + EmverPipesModule, ], declarations: [UpdatesPage, FilterUpdatesPipe], }) diff --git a/frontend/projects/ui/src/app/pages/updates/updates.page.html b/frontend/projects/ui/src/app/pages/updates/updates.page.html index 52751be7b..13a307b10 100644 --- a/frontend/projects/ui/src/app/pages/updates/updates.page.html +++ b/frontend/projects/ui/src/app/pages/updates/updates.page.html @@ -10,10 +10,10 @@ - - {{ host.name }}   -
- + +
+

{{ host.name }}

+
@@ -28,62 +28,73 @@ - - - - - - -

+ + + - {{ pkg.manifest.title }} -

-

- {{ local.manifest.version }} -    - - {{ pkg.manifest.version }} - -

-

-

- {{ error }} -

-
+ + + +

+ {{ pkg.manifest.title }} +

+

+ {{ local.manifest.version | displayEmver }} +    + + {{ pkg.manifest.version | displayEmver }} + +

+

+ {{ error }} +

+
-
- - - - - - {{ errors[pkg.manifest.id] ? 'Retry' : 'Update' }} - +
+ + + + + + {{ marketplaceService.updateErrors[pkg.manifest.id] ? + 'Retry' : 'Update' }} + + - -
- - +
+
+
+
+
What's New
+

+
+

All services are up to date!

diff --git a/frontend/projects/ui/src/app/pages/updates/updates.page.scss b/frontend/projects/ui/src/app/pages/updates/updates.page.scss index 546be123f..1c65a7eaa 100644 --- a/frontend/projects/ui/src/app/pages/updates/updates.page.scss +++ b/frontend/projects/ui/src/app/pages/updates/updates.page.scss @@ -1,13 +1,16 @@ -.service-avatar { - position: absolute; - top: 6px; - cursor: pointer; +.item-container { + padding-bottom: 24px; + border-bottom: 1px solid #373737; } -ion-label { - margin-left: 64px; +.notes { + margin-left: 20px; } -.name:only-child { - display: none; +.header { + margin-bottom: 20px; + h1 { + font-weight: bold; + margin: 0 12px 0 0; + } } diff --git a/frontend/projects/ui/src/app/pages/updates/updates.page.ts b/frontend/projects/ui/src/app/pages/updates/updates.page.ts index 5dfae2c9a..0d2ccad28 100644 --- a/frontend/projects/ui/src/app/pages/updates/updates.page.ts +++ b/frontend/projects/ui/src/app/pages/updates/updates.page.ts @@ -17,7 +17,6 @@ import { import { Emver, isEmptyObject, sameUrl } from '@start9labs/shared' import { Pipe, PipeTransform } from '@angular/core' import { combineLatest, Observable } from 'rxjs' -import { PrimaryRendering } from '../../services/pkg-status-rendering.service' import { AlertController, LoadingController, @@ -40,9 +39,6 @@ interface UpdatesData { styleUrls: ['updates.page.scss'], }) export class UpdatesPage { - queued: Record = {} - errors: Record = {} - readonly data$: Observable = combineLatest({ hosts: this.marketplaceService.getKnownHosts$(), marketplace: this.marketplaceService.getMarketplace$(), @@ -51,11 +47,10 @@ export class UpdatesPage { }) readonly PackageState = PackageState - readonly rendering = PrimaryRendering[PackageState.Installing] constructor( @Inject(AbstractMarketplaceService) - private readonly marketplaceService: MarketplaceService, + readonly marketplaceService: MarketplaceService, private readonly api: ApiService, private readonly patch: PatchDB, private readonly navCtrl: NavController, @@ -79,8 +74,8 @@ export class UpdatesPage { ): Promise { const { id, version } = manifest - delete this.errors[id] - this.queued[id] = true + delete this.marketplaceService.updateErrors[id] + this.marketplaceService.updateQueue[id] = true if (hasCurrentDeps(local)) { this.dryUpdate(manifest, url) @@ -114,12 +109,12 @@ export class UpdatesPage { if (proceed) { this.update(id, version, url) } else { - delete this.queued[id] + delete this.marketplaceService.updateQueue[id] } } } catch (e: any) { - delete this.queued[id] - this.errors[id] = e.message + delete this.marketplaceService.updateQueue[id] + this.marketplaceService.updateErrors[id] = e.message } } @@ -162,11 +157,13 @@ export class UpdatesPage { }) } - private update(id: string, version: string, url: string) { - this.marketplaceService.installPackage(id, version, url).catch(e => { - delete this.queued[id] - this.errors[id] = e.message - }) + private async update(id: string, version: string, url: string) { + try { + await this.marketplaceService.installPackage(id, version, url) + } catch (e: any) { + delete this.marketplaceService.updateQueue[id] + this.marketplaceService.updateErrors[id] = e.message + } } } @@ -204,7 +201,7 @@ export function versionLower( emver: Emver, ): boolean { return ( - local[id].state === PackageState.Installing || + local[id].state === PackageState.Updating || emver.compare(version, local[id].installed?.manifest.version || '') === 1 ) } diff --git a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts index 5a0c55432..d511c8a60 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-mock-api.service.ts @@ -587,7 +587,8 @@ export class MockApiService extends ApiService { path: `/package-data/${params.id}`, value: { ...Mock.LocalPkgs[params.id], - state: PackageState.Installing, + // state: PackageState.Installing, + state: PackageState.Updating, 'install-progress': { ...PROGRESS }, }, }, diff --git a/frontend/projects/ui/src/app/services/marketplace.service.ts b/frontend/projects/ui/src/app/services/marketplace.service.ts index 46dbce7e7..b1b8d0148 100644 --- a/frontend/projects/ui/src/app/services/marketplace.service.ts +++ b/frontend/projects/ui/src/app/services/marketplace.service.ts @@ -156,6 +156,8 @@ export class MarketplaceService implements AbstractMarketplaceService { } // UI only + readonly updateErrors: Record = {} + readonly updateQueue: Record = {} getRequestErrors$(): Observable { return this.requestErrors$