Better Updates Tab and updates count (#2151)

* wip

* should be working now

* delete unused function

* delete 2 more unused functions

* update fixture to include beta registry

* address comments

* wait for connection to get local packages
This commit is contained in:
Matt Hill
2023-02-06 10:55:51 -07:00
committed by Aiden McClelland
parent 62f78e4312
commit 4d3df867da
7 changed files with 82 additions and 75 deletions

View File

@@ -26,7 +26,7 @@
*ngIf="data.marketplace[host.url]?.packages as packages else loading"
>
<ng-container
*ngIf="packages | filterUpdates : data.localPkgs : host.url as updates"
*ngIf="packages | filterUpdates : data.localPkgs as updates"
>
<div *ngFor="let pkg of updates" class="item-container">
<ion-item lines="none">

View File

@@ -14,9 +14,9 @@ import {
MarketplacePkg,
StoreIdentity,
} from '@start9labs/marketplace'
import { Emver, isEmptyObject, sameUrl } from '@start9labs/shared'
import { Emver, isEmptyObject } from '@start9labs/shared'
import { Pipe, PipeTransform } from '@angular/core'
import { combineLatest, map, Observable } from 'rxjs'
import { combineLatest, Observable } from 'rxjs'
import {
AlertController,
LoadingController,
@@ -25,8 +25,6 @@ import {
import { hasCurrentDeps } from 'src/app/util/has-deps'
import { getAllPackages } from 'src/app/util/get-package-data'
import { Breakages } from 'src/app/services/api/api.types'
import { ClientStorageService } from 'src/app/services/client-storage.service'
import { ConfigService } from 'src/app/services/config.service'
interface UpdatesData {
hosts: StoreIdentity[]
@@ -41,20 +39,8 @@ interface UpdatesData {
styleUrls: ['updates.page.scss'],
})
export class UpdatesPage {
readonly hosts$ = combineLatest([
this.clientStorageService.showDevTools$,
this.marketplaceService.getKnownHosts$(),
]).pipe(
map(([devMode, knownHosts]) => {
if (devMode) return knownHosts
return knownHosts.filter(
({ url }) => !url.includes('alpha') && !url.includes('beta'),
)
}),
)
readonly data$: Observable<UpdatesData> = combineLatest({
hosts: this.hosts$,
hosts: this.marketplaceService.getKnownHosts$(true),
marketplace: this.marketplaceService.getMarketplace$(),
localPkgs: this.patch.watch$('package-data'),
errors: this.marketplaceService.getRequestErrors$(),
@@ -70,8 +56,6 @@ export class UpdatesPage {
private readonly navCtrl: NavController,
private readonly loadingCtrl: LoadingController,
private readonly alertCtrl: AlertController,
private readonly clientStorageService: ClientStorageService,
private readonly config: ConfigService,
) {}
viewInMarketplace(pkg: PackageDataEntry) {
@@ -191,33 +175,18 @@ export class FilterUpdatesPipe implements PipeTransform {
transform(
pkgs: MarketplacePkg[],
local: Record<string, PackageDataEntry> = {},
url: string,
local: Record<string, PackageDataEntry | undefined>,
): MarketplacePkg[] {
return pkgs.filter(
({ manifest }) =>
marketplaceSame(manifest, local, url) &&
versionLower(manifest, local, this.emver),
)
return pkgs.filter(({ manifest }) => {
const localPkg = local[manifest.id]
return (
localPkg?.state === PackageState.Updating ||
this.emver.compare(
manifest.version,
localPkg?.installed?.manifest.version || '',
) === 1
)
})
}
}
export function marketplaceSame(
{ id }: MarketplaceManifest,
local: Record<string, PackageDataEntry>,
url: string,
): boolean {
const localUrl = local[id]?.installed?.['marketplace-url']
return sameUrl(localUrl, url)
}
export function versionLower(
{ version, id }: MarketplaceManifest,
local: Record<string, PackageDataEntry>,
emver: Emver,
): boolean {
return (
local[id].state === PackageState.Updating ||
emver.compare(version, local[id].installed?.manifest.version || '') === 1
)
}