Rework PackageDataEntry for new strategy (#2573)

* rework PackageDataEntry for new strategy

* fix type error

* fix issues with manifest fetching

* mock installs working
This commit is contained in:
Matt Hill
2024-03-19 08:38:04 -06:00
committed by GitHub
parent c8be701f0e
commit cc38dab76f
64 changed files with 1759 additions and 2068 deletions

View File

@@ -2,7 +2,9 @@ import { Component, Inject } from '@angular/core'
import { PatchDB } from 'patch-db-client'
import {
DataModel,
InstalledState,
PackageDataEntry,
UpdatingState,
} from 'src/app/services/patch-db/data-model'
import { MarketplaceService } from 'src/app/services/marketplace.service'
import {
@@ -14,16 +16,20 @@ import {
} from '@start9labs/marketplace'
import { Emver, isEmptyObject } from '@start9labs/shared'
import { Pipe, PipeTransform } from '@angular/core'
import { combineLatest, Observable } from 'rxjs'
import { combineLatest, map, Observable } from 'rxjs'
import { AlertController, NavController } from '@ionic/angular'
import { hasCurrentDeps } from 'src/app/util/has-deps'
import { getAllPackages } from 'src/app/util/get-package-data'
import {
getAllPackages,
isInstalled,
isUpdating,
} from 'src/app/util/get-package-data'
import { dryUpdate } from 'src/app/util/dry-update'
interface UpdatesData {
hosts: StoreIdentity[]
marketplace: Marketplace
localPkgs: Record<string, PackageDataEntry>
localPkgs: Record<string, PackageDataEntry<InstalledState | UpdatingState>>
errors: string[]
}
@@ -36,7 +42,14 @@ export class UpdatesPage {
readonly data$: Observable<UpdatesData> = combineLatest({
hosts: this.marketplaceService.getKnownHosts$(true),
marketplace: this.marketplaceService.getMarketplace$(),
localPkgs: this.patch.watch$('package-data'),
localPkgs: this.patch.watch$('package-data').pipe(
map(pkgs =>
Object.values(pkgs).reduce((acc, curr) => {
if (isInstalled(curr) || isUpdating(curr)) return { ...acc, curr }
return acc
}, {} as Record<string, PackageDataEntry<InstalledState | UpdatingState>>),
),
),
errors: this.marketplaceService.getRequestErrors$(),
})
@@ -154,14 +167,17 @@ export class FilterUpdatesPipe implements PipeTransform {
transform(
pkgs: MarketplacePkg[],
local: Record<string, PackageDataEntry | undefined>,
local: Record<string, PackageDataEntry<InstalledState | UpdatingState>>,
): MarketplacePkg[] {
return pkgs.filter(
({ manifest }) =>
return pkgs.filter(({ manifest }) => {
const localPkg = local[manifest.id]
return (
localPkg &&
this.emver.compare(
manifest.version,
local[manifest.id]?.installed?.manifest.version || '',
) === 1,
)
localPkg['state-info'].manifest.version,
) === 1
)
})
}
}