From 22d8d08355a2b2cecc03ee8fd33e6e03fa1b4ee0 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Wed, 27 Mar 2024 10:25:07 -0600 Subject: [PATCH] update patch types for current dependencies --- .../apps-routes/app-show/app-show.page.ts | 10 +++---- .../src/app/pages/updates/updates.page.html | 19 +++++++----- .../ui/src/app/pages/updates/updates.page.ts | 4 +-- .../install-progress/install-progress.pipe.ts | 6 ---- .../ui/src/app/services/api/api.fixures.ts | 29 ++++++++----------- .../services/api/embassy-mock-api.service.ts | 10 +++---- .../ui/src/app/services/api/mock-patch.ts | 19 +++++------- .../ui/src/app/services/dep-error.service.ts | 6 ++-- .../src/app/services/patch-db/data-model.ts | 14 ++++----- web/projects/ui/src/app/util/dry-update.ts | 3 +- 10 files changed, 52 insertions(+), 68 deletions(-) diff --git a/web/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts b/web/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts index 840c647d2..0c32c0ba2 100644 --- a/web/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts +++ b/web/projects/ui/src/app/pages/apps-routes/app-show/app-show.page.ts @@ -103,13 +103,13 @@ export class AppShowPage { depErrors, ) - const depInfo = pkg.dependencyInfo[depId] + const { title, icon, versionSpec } = pkg.currentDependencies[depId] return { id: depId, - version: pkg.currentDependencies[depId].versionRange, // @TODO do we want this version range? - title: depInfo?.title || depId, - icon: depInfo?.icon || '', + version: versionSpec, + title, + icon, errorText: errorText ? `${errorText}. ${manifest.title} will not work as expected.` : '', @@ -184,7 +184,7 @@ export class AppShowPage { const dependentInfo: DependentInfo = { id: pkgManifest.id, title: pkgManifest.title, - version: pkg.currentDependencies[depId].versionRange, + version: pkg.currentDependencies[depId].versionSpec, } const navigationExtras: NavigationExtras = { state: { dependentInfo }, diff --git a/web/projects/ui/src/app/pages/updates/updates.page.html b/web/projects/ui/src/app/pages/updates/updates.page.html index a31d889ff..ca71bb6b3 100644 --- a/web/projects/ui/src/app/pages/updates/updates.page.html +++ b/web/projects/ui/src/app/pages/updates/updates.page.html @@ -55,15 +55,18 @@

- + > + + - Object.values(pkgs).reduce((acc, curr) => { - if (isInstalled(curr) || isUpdating(curr)) return { ...acc, curr } + Object.entries(pkgs).reduce((acc, [id, val]) => { + if (isInstalled(val) || isUpdating(val)) return { ...acc, [id]: val } return acc }, {} as Record>), ), diff --git a/web/projects/ui/src/app/pipes/install-progress/install-progress.pipe.ts b/web/projects/ui/src/app/pipes/install-progress/install-progress.pipe.ts index e6f87a127..93e826bf7 100644 --- a/web/projects/ui/src/app/pipes/install-progress/install-progress.pipe.ts +++ b/web/projects/ui/src/app/pipes/install-progress/install-progress.pipe.ts @@ -24,9 +24,3 @@ export class InstallingProgressPipe implements PipeTransform { return Number((progress.done / progress.total).toFixed(2)) } } - -function getProgress(progress: Progress): number | null { - if (progress === true) return 1 - if (progress === false || !progress.total) return null - return Number((progress.done / progress.total).toFixed(2)) -} diff --git a/web/projects/ui/src/app/services/api/api.fixures.ts b/web/projects/ui/src/app/services/api/api.fixures.ts index 7786e3566..77c0a684c 100644 --- a/web/projects/ui/src/app/services/api/api.fixures.ts +++ b/web/projects/ui/src/app/services/api/api.fixures.ts @@ -1608,7 +1608,6 @@ export module Mock { }, }, currentDependencies: {}, - dependencyInfo: {}, marketplaceUrl: 'https://registry.start9.com/', developerKey: 'developer-key', } @@ -1737,15 +1736,13 @@ export module Mock { }, }, currentDependencies: { - bitcoind: { - versionRange: '>=26.0.0', - healthChecks: [], - }, - }, - dependencyInfo: { bitcoind: { title: Mock.MockManifestBitcoind.title, icon: 'assets/img/service-icons/bitcoind.svg', + kind: 'running', + registryUrl: '', + versionSpec: '>=26.0.0', + healthChecks: [], }, }, marketplaceUrl: 'https://registry.start9.com/', @@ -1982,23 +1979,21 @@ export module Mock { }, }, currentDependencies: { - bitcoind: { - versionRange: '>=26.0.0', - healthChecks: [], - }, - 'btc-rpc-proxy': { - versionRange: '>2.0.0', // @TODO - healthChecks: [], - }, - }, - dependencyInfo: { bitcoind: { title: Mock.MockManifestBitcoind.title, icon: 'assets/img/service-icons/bitcoind.svg', + kind: 'running', + registryUrl: 'https://registry.start9.com', + versionSpec: '>=26.0.0', + healthChecks: [], }, 'btc-rpc-proxy': { title: Mock.MockManifestBitcoinProxy.title, icon: 'assets/img/service-icons/btc-rpc-proxy.png', + kind: 'exists', + registryUrl: 'https://community-registry.start9.com', + versionSpec: '>2.0.0', // @TODO + healthChecks: [], }, }, marketplaceUrl: 'https://registry.start9.com/', diff --git a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts index 6b423b244..5f9b1b3bc 100644 --- a/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts +++ b/web/projects/ui/src/app/services/api/embassy-mock-api.service.ts @@ -679,8 +679,6 @@ export class MockApiService extends ApiService { this.updateProgress(params.id) }, 1000) - const manifest = Mock.LocalPkgs[params.id].stateInfo.manifest - const patch: Operation< PackageDataEntry >[] = [ @@ -691,15 +689,15 @@ export class MockApiService extends ApiService { ...Mock.LocalPkgs[params.id], stateInfo: { // if installing - state: PackageState.Installing, + // state: PackageState.Installing, // if updating - // state: PackageState.Updating, - // manifest, + state: PackageState.Updating, + manifest: mockPatchData.packageData[params.id].stateInfo.manifest!, // both installingInfo: { - newManifest: manifest, + newManifest: Mock.LocalPkgs[params.id].stateInfo.manifest, progress: PROGRESS, }, }, diff --git a/web/projects/ui/src/app/services/api/mock-patch.ts b/web/projects/ui/src/app/services/api/mock-patch.ts index 5bd69293c..00b57d2cc 100644 --- a/web/projects/ui/src/app/services/api/mock-patch.ts +++ b/web/projects/ui/src/app/services/api/mock-patch.ts @@ -335,7 +335,6 @@ export const mockPatchData: DataModel = { }, }, currentDependencies: {}, - dependencyInfo: {}, marketplaceUrl: 'https://registry.start9.com/', developerKey: 'developer-key', }, @@ -570,23 +569,21 @@ export const mockPatchData: DataModel = { }, }, currentDependencies: { - bitcoind: { - versionRange: '>=26.0.0', - healthChecks: [], - }, - 'btc-rpc-proxy': { - versionRange: '>2.0.0', - healthChecks: [], - }, - }, - dependencyInfo: { bitcoind: { title: 'Bitcoin Core', icon: 'assets/img/service-icons/bitcoind.svg', + kind: 'running', + registryUrl: 'https://registry.start9.com', + versionSpec: '>=26.0.0', + healthChecks: [], }, 'btc-rpc-proxy': { title: 'Bitcoin Proxy', icon: 'assets/img/service-icons/btc-rpc-proxy.png', + kind: 'running', + registryUrl: 'https://community-registry.start9.com', + versionSpec: '>2.0.0', + healthChecks: [], }, }, marketplaceUrl: 'https://registry.start9.com/', diff --git a/web/projects/ui/src/app/services/dep-error.service.ts b/web/projects/ui/src/app/services/dep-error.service.ts index 50020f5fe..1991f7bec 100644 --- a/web/projects/ui/src/app/services/dep-error.service.ts +++ b/web/projects/ui/src/app/services/dep-error.service.ts @@ -85,14 +85,14 @@ export class DepErrorService { } } - const versionRange = pkg.currentDependencies[depId].versionRange + const versionSpec = pkg.currentDependencies[depId].versionSpec const depManifest = dep.stateInfo.manifest // incorrect version - if (!this.emver.satisfies(depManifest.version, versionRange)) { + if (!this.emver.satisfies(depManifest.version, versionSpec)) { return { type: DependencyErrorType.IncorrectVersion, - expected: versionRange, + expected: versionSpec, received: depManifest.version, } } diff --git a/web/projects/ui/src/app/services/patch-db/data-model.ts b/web/projects/ui/src/app/services/patch-db/data-model.ts index c1d46ece2..29761e300 100644 --- a/web/projects/ui/src/app/services/patch-db/data-model.ts +++ b/web/projects/ui/src/app/services/patch-db/data-model.ts @@ -100,13 +100,7 @@ export type PackageDataEntry = { status: Status actions: Record lastBackup: string | null - currentDependencies: { [id: string]: CurrentDependencyInfo } - dependencyInfo: { - [id: string]: { - title: string - icon: Url - } - } + currentDependencies: Record serviceInterfaces: Record marketplaceUrl: string | null developerKey: string @@ -117,11 +111,13 @@ export type StateInfo = InstalledState | InstallingState | UpdatingState export type InstalledState = { state: PackageState.Installed | PackageState.Removing manifest: Manifest + installingInfo?: undefined } export type InstallingState = { state: PackageState.Installing | PackageState.Restoring installingInfo: InstallingInfo + manifest?: undefined } export type UpdatingState = { @@ -139,8 +135,10 @@ export enum PackageState { } export interface CurrentDependencyInfo { + title: string + icon: string kind: 'exists' | 'running' - url: string + registryUrl: string versionSpec: string healthChecks: string[] // array of health check IDs } diff --git a/web/projects/ui/src/app/util/dry-update.ts b/web/projects/ui/src/app/util/dry-update.ts index 472a48389..2d4d1aa10 100644 --- a/web/projects/ui/src/app/util/dry-update.ts +++ b/web/projects/ui/src/app/util/dry-update.ts @@ -12,8 +12,7 @@ export function dryUpdate( pkg => Object.keys(pkg.currentDependencies || {}).some( pkgId => pkgId === id, - ) && - !emver.satisfies(version, pkg.currentDependencies[id].versionRange), + ) && !emver.satisfies(version, pkg.currentDependencies[id].versionSpec), ) .map(pkg => getManifest(pkg).title) }