diff --git a/web/projects/marketplace/package.json b/web/projects/marketplace/package.json index 0df2775d8..1623a6e6e 100644 --- a/web/projects/marketplace/package.json +++ b/web/projects/marketplace/package.json @@ -1,6 +1,6 @@ { "name": "@start9labs/marketplace", - "version": "0.3.34", + "version": "0.3.35", "peerDependencies": { "@angular/common": ">=13.2.0", "@angular/core": ">=13.2.0", diff --git a/web/projects/marketplace/src/components/menu/menu.component.ts b/web/projects/marketplace/src/components/menu/menu.component.ts index 5eb580e30..9d56faa8e 100644 --- a/web/projects/marketplace/src/components/menu/menu.component.ts +++ b/web/projects/marketplace/src/components/menu/menu.component.ts @@ -8,7 +8,7 @@ import { import { MarketplaceConfig } from '@start9labs/shared' import { Subject, takeUntil } from 'rxjs' import { AbstractCategoryService } from '../../services/category.service' -import { StoreData } from '../../types' +import { StoreDataWithUrl } from '../../types' @Component({ selector: 'menu', @@ -21,7 +21,7 @@ export class MenuComponent implements OnDestroy { iconConfig!: MarketplaceConfig @Input({ required: true }) - registry: (StoreData & { url?: string }) | null = null + registry: StoreDataWithUrl | null = null private destroy$ = new Subject() private readonly categoryService = inject(AbstractCategoryService) diff --git a/web/projects/marketplace/src/types.ts b/web/projects/marketplace/src/types.ts index 9853cddbb..e5022cc68 100644 --- a/web/projects/marketplace/src/types.ts +++ b/web/projects/marketplace/src/types.ts @@ -37,3 +37,5 @@ export type MarketplacePkg = T.PackageVersionInfo & version: string flavor: string | null } + +export type StoreDataWithUrl = StoreData & { url: string } diff --git a/web/projects/ui/src/app/app.providers.ts b/web/projects/ui/src/app/app.providers.ts index 6389eb76d..47e7a6314 100644 --- a/web/projects/ui/src/app/app.providers.ts +++ b/web/projects/ui/src/app/app.providers.ts @@ -3,7 +3,6 @@ import { UntypedFormBuilder } from '@angular/forms' import { Router } from '@angular/router' import { AbstractCategoryService, - AbstractMarketplaceService, FilterPackagesPipe, } from '@start9labs/marketplace' import { RELATIVE_URL, THEME, WorkspaceConfig } from '@start9labs/shared' @@ -90,10 +89,6 @@ export const APP_PROVIDERS: Provider[] = [ provide: THEME, useExisting: ThemeSwitcherService, }, - { - provide: AbstractMarketplaceService, - useClass: MarketplaceService, - }, { provide: AbstractCategoryService, useClass: CategoryService, diff --git a/web/projects/ui/src/app/routes/portal/components/tabs.component.ts b/web/projects/ui/src/app/routes/portal/components/tabs.component.ts index 0a8c2f0db..2fa4a2126 100644 --- a/web/projects/ui/src/app/routes/portal/components/tabs.component.ts +++ b/web/projects/ui/src/app/routes/portal/components/tabs.component.ts @@ -50,6 +50,16 @@ const FILTER = ['/portal/system/settings', '/portal/system/marketplace'] > Settings + + Settings + - } @else { - - } - } - - - What's new -

- - View listing - -
- - `, - styles: [ - ` - :host { - display: block; - --tui-background-neutral-1-hover: transparent; +// @Component({ +// selector: 'updates-item', +// template: ` +// +//
+// +// +// +//
+// {{ marketplacePkg.title }} +//
+// {{ localPkg.stateInfo.manifest.version }} +// +// +// {{ marketplacePkg.version }} +// +//
+//
{{ errors }}
+//
+// @if (localPkg.stateInfo.state === 'updating') { +// +// } @else { +// @if (ready) { +// +// } @else { +// +// } +// } +//
+// +// What's new +//

+// +// View listing +// +//
+//
+// `, +// styles: [ +// ` +// :host { +// display: block; +// --tui-background-neutral-1-hover: transparent; - &:not(:last-child) { - border-bottom: 1px solid var(--tui-background-neutral-1); - } - } - `, - ], - standalone: true, - imports: [ - RouterLink, - MarkdownPipeModule, - NgDompurifyModule, - SafeLinksDirective, - SharedPipesModule, - TuiProgress, - TuiAccordion, - TuiAvatar, - TuiIcon, - TuiButton, - TuiLink, - TuiLoader, - InstallingProgressPipe, - ], -}) -export class UpdatesItemComponent { - private readonly dialogs = inject(TuiDialogService) - private readonly patch = inject>(PatchDB) - private readonly marketplace = inject( - AbstractMarketplaceService, - ) as MarketplaceService +// &:not(:last-child) { +// border-bottom: 1px solid var(--tui-background-neutral-1); +// } +// } +// `, +// ], +// standalone: true, +// imports: [ +// RouterLink, +// MarkdownPipeModule, +// NgDompurifyModule, +// SafeLinksDirective, +// SharedPipesModule, +// TuiProgress, +// TuiAccordion, +// TuiAvatar, +// TuiIcon, +// TuiButton, +// TuiLink, +// TuiLoader, +// InstallingProgressPipe, +// ], +// }) +// export class UpdatesItemComponent { +// private readonly dialogs = inject(TuiDialogService) +// private readonly patch = inject>(PatchDB) +// private readonly marketplaceService = inject(MarketplaceService) - @Input({ required: true }) - marketplacePkg!: MarketplacePkg +// @Input({ required: true }) +// marketplacePkg!: MarketplacePkg - @Input({ required: true }) - localPkg!: PackageDataEntry +// @Input({ required: true }) +// localPkg!: PackageDataEntry - @Input({ required: true }) - url!: string +// @Input({ required: true }) +// url!: string - get pkgId(): string { - return this.marketplacePkg.id - } +// get pkgId(): string { +// return this.marketplacePkg.id +// } - get errors(): string { - return this.marketplace.updateErrors[this.pkgId] - } +// get errors(): string { +// return this.marketplaceService.updateErrors[this.pkgId] +// } - get ready(): boolean { - return !this.marketplace.updateQueue[this.pkgId] - } +// get ready(): boolean { +// return !this.marketplaceService.updateQueue[this.pkgId] +// } - async onClick() { - const { id } = this.marketplacePkg +// async onClick() { +// const { id } = this.marketplacePkg - delete this.marketplace.updateErrors[id] - this.marketplace.updateQueue[id] = true +// delete this.marketplaceService.updateErrors[id] +// this.marketplaceService.updateQueue[id] = true - if (hasCurrentDeps(id, await getAllPackages(this.patch))) { - const proceed = await this.alert() +// if (hasCurrentDeps(id, await getAllPackages(this.patch))) { +// const proceed = await this.alert() - if (proceed) { - await this.update() - } else { - delete this.marketplace.updateQueue[id] - } - } else { - await this.update() - } - } +// if (proceed) { +// await this.update() +// } else { +// delete this.marketplaceService.updateQueue[id] +// } +// } else { +// await this.update() +// } +// } - private async update() { - const { id, version } = this.marketplacePkg +// private async update() { +// const { id, version } = this.marketplacePkg - try { - await this.marketplace.installPackage(id, version, this.url) - delete this.marketplace.updateQueue[id] - } catch (e: any) { - delete this.marketplace.updateQueue[id] - this.marketplace.updateErrors[id] = e.message - } - } +// try { +// await this.marketplaceService.installPackage(id, version, this.url) +// delete this.marketplaceService.updateQueue[id] +// } catch (e: any) { +// delete this.marketplaceService.updateQueue[id] +// this.marketplaceService.updateErrors[id] = e.message +// } +// } - private async alert(): Promise { - return new Promise(async resolve => { - this.dialogs - .open(TUI_CONFIRM, { - label: 'Warning', - size: 's', - data: { - content: `Services that depend on ${this.localPkg.stateInfo.manifest.title} will no longer work properly and may crash`, - yes: 'Continue', - no: 'Cancel', - }, - }) - .subscribe(response => resolve(response)) - }) - } -} +// private async alert(): Promise { +// return new Promise(async resolve => { +// this.dialogs +// .open(TUI_CONFIRM, { +// label: 'Warning', +// size: 's', +// data: { +// content: `Services that depend on ${this.localPkg.stateInfo.manifest.title} will no longer work properly and may crash`, +// yes: 'Continue', +// no: 'Cancel', +// }, +// }) +// .subscribe(response => resolve(response)) +// }) +// } +// } diff --git a/web/projects/ui/src/app/routes/portal/routes/system/updates/updates.component.ts b/web/projects/ui/src/app/routes/portal/routes/system/updates/updates.component.ts index 774976c0f..1303824c0 100644 --- a/web/projects/ui/src/app/routes/portal/routes/system/updates/updates.component.ts +++ b/web/projects/ui/src/app/routes/portal/routes/system/updates/updates.component.ts @@ -1,98 +1,95 @@ -import { CommonModule } from '@angular/common' -import { ChangeDetectionStrategy, Component, inject } from '@angular/core' -import { - AbstractMarketplaceService, - StoreIconComponentModule, -} from '@start9labs/marketplace' -import { TuiAvatar } from '@taiga-ui/kit' -import { TuiCell } from '@taiga-ui/layout' -import { PatchDB } from 'patch-db-client' -import { combineLatest, map } from 'rxjs' -import { FilterUpdatesPipe } from 'src/app/routes/portal/routes/system/updates/filter-updates.pipe' -import { UpdatesItemComponent } from 'src/app/routes/portal/routes/system/updates/item.component' -import { ConfigService } from 'src/app/services/config.service' -import { MarketplaceService } from 'src/app/services/marketplace.service' -import { - DataModel, - InstalledState, - PackageDataEntry, - UpdatingState, -} from 'src/app/services/patch-db/data-model' -import { isInstalled, isUpdating } from 'src/app/utils/get-package-data' +// import { CommonModule } from '@angular/common' +// import { ChangeDetectionStrategy, Component, inject } from '@angular/core' +// import { +// StoreIconComponentModule, +// } from '@start9labs/marketplace' +// import { TuiAvatar } from '@taiga-ui/kit' +// import { TuiCell } from '@taiga-ui/layout' +// import { PatchDB } from 'patch-db-client' +// import { combineLatest, map } from 'rxjs' +// import { FilterUpdatesPipe } from 'src/app/routes/portal/routes/system/updates/filter-updates.pipe' +// import { UpdatesItemComponent } from 'src/app/routes/portal/routes/system/updates/item.component' +// import { ConfigService } from 'src/app/services/config.service' +// import { MarketplaceService } from 'src/app/services/marketplace.service' +// import { +// DataModel, +// InstalledState, +// PackageDataEntry, +// UpdatingState, +// } from 'src/app/services/patch-db/data-model' +// import { isInstalled, isUpdating } from 'src/app/utils/get-package-data' -@Component({ - template: ` - @if (data$ | async; as data) { - @for (host of data.hosts; track host) { -

- - {{ host.name }} -

- @if (data.errors.includes(host.url)) { -

Request Failed

- } - @if (data.mp[host.url]?.packages | filterUpdates: data.local; as pkgs) { - @for (pkg of pkgs; track pkg) { - - } @empty { -

All services are up to date!

- } - } @else { - @for (i of [0, 1, 2]; track i) { -
- - Loading update item - - Loading actions - -
- } - } - } - } - `, - host: { class: 'g-page' }, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: true, - imports: [ - CommonModule, - TuiCell, - TuiAvatar, - StoreIconComponentModule, - FilterUpdatesPipe, - UpdatesItemComponent, - ], -}) -export default class UpdatesComponent { - private readonly service = inject( - AbstractMarketplaceService, - ) as MarketplaceService +// @Component({ +// template: ` +// @if (data$ | async; as data) { +// @for (host of data.hosts; track host) { +//

+// +// {{ host.name }} +//

+// @if (data.errors.includes(host.url)) { +//

Request Failed

+// } +// @if (data.mp[host.url]?.packages | filterUpdates: data.local; as pkgs) { +// @for (pkg of pkgs; track pkg) { +// +// } @empty { +//

All services are up to date!

+// } +// } @else { +// @for (i of [0, 1, 2]; track i) { +//
+// +// Loading update item +// +// Loading actions +// +//
+// } +// } +// } +// } +// `, +// host: { class: 'g-page' }, +// changeDetection: ChangeDetectionStrategy.OnPush, +// standalone: true, +// imports: [ +// CommonModule, +// TuiCell, +// TuiAvatar, +// StoreIconComponentModule, +// FilterUpdatesPipe, +// UpdatesItemComponent, +// ], +// }) +// export default class UpdatesComponent { +// private readonly marketplaceService = inject(MarketplaceService) - readonly mp = inject(ConfigService).marketplace - readonly data$ = combineLatest({ - hosts: this.service.getKnownHosts$(true), - mp: this.service.getMarketplace$(), - local: inject>(PatchDB) - .watch$('packageData') - .pipe( - map(pkgs => - Object.entries(pkgs).reduce( - (acc, [id, val]) => { - if (isInstalled(val) || isUpdating(val)) - return { ...acc, [id]: val } - return acc - }, - {} as Record< - string, - PackageDataEntry - >, - ), - ), - ), - errors: this.service.getRequestErrors$(), - }) -} +// readonly mp = inject(ConfigService).marketplace +// readonly data$ = combineLatest({ +// hosts: this.marketplaceService.getKnownHosts$(true), +// mp: this.marketplaceService.getMarketplace$(), +// local: inject>(PatchDB) +// .watch$('packageData') +// .pipe( +// map(pkgs => +// Object.entries(pkgs).reduce( +// (acc, [id, val]) => { +// if (isInstalled(val) || isUpdating(val)) +// return { ...acc, [id]: val } +// return acc +// }, +// {} as Record< +// string, +// PackageDataEntry +// >, +// ), +// ), +// ), +// errors: this.marketplaceService.getRequestErrors$(), +// }) +// } diff --git a/web/projects/ui/src/app/services/badge.service.ts b/web/projects/ui/src/app/services/badge.service.ts index 28917c6e8..d1b8ab062 100644 --- a/web/projects/ui/src/app/services/badge.service.ts +++ b/web/projects/ui/src/app/services/badge.service.ts @@ -1,5 +1,4 @@ import { inject, Injectable } from '@angular/core' -import { AbstractMarketplaceService } from '@start9labs/marketplace' import { Exver } from '@start9labs/shared' import { PatchDB } from 'patch-db-client' import { @@ -10,7 +9,6 @@ import { map, Observable, pairwise, - shareReplay, startWith, switchMap, } from 'rxjs' @@ -32,9 +30,7 @@ export class BadgeService { this.patch.watch$('serverInfo', 'ntpSynced'), inject(EOSService).updateAvailable$, ]).pipe(map(([synced, update]) => Number(!synced) + Number(update))) - private readonly marketplace = inject( - AbstractMarketplaceService, - ) as MarketplaceService + private readonly marketplaceService = inject(MarketplaceService) private readonly local$ = inject(ConnectionService).pipe( filter(Boolean), @@ -58,35 +54,35 @@ export class BadgeService { ), ) - private readonly updates$ = combineLatest([ - this.marketplace.getMarketplace$(true), - this.local$, - ]).pipe( - map( - ([marketplace, local]) => - Object.entries(marketplace).reduce( - (list, [_, store]) => - store?.packages.reduce( - (result, { id, version }) => - local[id] && - this.exver.compareExver( - version, - getManifest(local[id]).version, - ) === 1 - ? result.add(id) - : result, - list, - ) || list, - new Set(), - ).size, - ), - shareReplay(1), - ) + // private readonly updates$ = combineLatest([ + // this.marketplaceService.getMarketplace$(true), + // this.local$, + // ]).pipe( + // map( + // ([marketplace, local]) => + // Object.entries(marketplace).reduce( + // (list, [_, store]) => + // store?.packages.reduce( + // (result, { id, version }) => + // local[id] && + // this.exver.compareExver( + // version, + // getManifest(local[id]).version, + // ) === 1 + // ? result.add(id) + // : result, + // list, + // ) || list, + // new Set(), + // ).size, + // ), + // shareReplay(1), + // ) getCount(id: string): Observable { switch (id) { - case '/portal/system/updates': - return this.updates$ + // case '/portal/system/updates': + // return this.updates$ case '/portal/system/settings': return this.settings$ case '/portal/system/notifications': diff --git a/web/projects/ui/src/app/services/marketplace.service.ts b/web/projects/ui/src/app/services/marketplace.service.ts index 60152dbdb..23f05a2e8 100644 --- a/web/projects/ui/src/app/services/marketplace.service.ts +++ b/web/projects/ui/src/app/services/marketplace.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core' import { - AbstractMarketplaceService, Marketplace, StoreIdentity, MarketplacePkg, GetPackageRes, StoreData, + StoreDataWithUrl, } from '@start9labs/marketplace' import { PatchDB } from 'patch-db-client' import { @@ -26,6 +26,8 @@ import { switchMap, take, tap, + distinctUntilChanged, + ReplaySubject, } from 'rxjs' import { RR } from 'src/app/services/api/api.types' import { ApiService } from 'src/app/services/api/embassy-api.service' @@ -34,9 +36,38 @@ import { ConfigService } from './config.service' import { Exver, sameUrl } from '@start9labs/shared' import { ClientStorageService } from './client-storage.service' import { T } from '@start9labs/start-sdk' +import { Router } from '@angular/router' + +@Injectable({ + providedIn: 'root', +}) +export class MarketplaceService { + private readonly registryUrlSubject$ = new ReplaySubject(1) + private readonly registryUrl$ = this.registryUrlSubject$.pipe( + distinctUntilChanged(), + ) + + private readonly registry$: Observable = + this.registryUrl$.pipe( + switchMap(url => this.fetchRegistry$(url)), + filter(Boolean), + map(registry => { + registry.info.categories = { + all: { + name: 'All', + description: { + short: 'All registry packages', + long: 'An unfiltered list of all packages available on this registry.', + }, + }, + ...registry.info.categories, + } + + return registry + }), + shareReplay(1), + ) -@Injectable() -export class MarketplaceService implements AbstractMarketplaceService { private readonly knownHosts$: Observable = this.patch .watch$('ui', 'marketplace', 'knownHosts') .pipe( @@ -69,71 +100,6 @@ export class MarketplaceService implements AbstractMarketplaceService { ), ) - private readonly selectedHost$: Observable = this.patch - .watch$('ui', 'marketplace') - .pipe( - distinctUntilKeyChanged('selectedUrl'), - map(({ selectedUrl: url, knownHosts: hosts }) => - toStoreIdentity(url, hosts[url]), - ), - shareReplay(1), - ) - - private readonly marketplace$ = this.knownHosts$.pipe( - startWith([]), - pairwise(), - mergeMap(([prev, curr]) => - curr.filter(c => !prev.find(p => sameUrl(c.url, p.url))), - ), - mergeMap(({ url, name }) => - this.fetchStore$(url).pipe( - tap(data => { - if (data?.info.name) this.updateStoreName(url, name, data.info.name) - }), - map(data => [url, data]), - startWith<[string, StoreData | null]>([url, null]), - ), - ), - scan<[string, StoreData | null], Record>( - (requests, [url, store]) => { - requests[url] = store - - return requests - }, - {}, - ), - shareReplay(1), - ) - - private readonly filteredMarketplace$ = combineLatest([ - this.clientStorageService.showDevTools$, - this.marketplace$, - ]).pipe( - map(([devMode, marketplace]) => - Object.entries(marketplace).reduce( - (filtered, [url, store]) => - !devMode && (url.includes('alpha') || url.includes('beta')) - ? filtered - : { - [url]: store, - ...filtered, - }, - {} as Marketplace, - ), - ), - ) - - private readonly selectedRegistry$: Observable = - this.selectedHost$.pipe( - switchMap(({ url }) => - this.marketplace$.pipe( - map(m => m[url]), - filter(Boolean), - take(1), - ), - ), - ) - private readonly requestErrors$ = new BehaviorSubject([]) constructor( @@ -142,6 +108,7 @@ export class MarketplaceService implements AbstractMarketplaceService { private readonly config: ConfigService, private readonly clientStorageService: ClientStorageService, private readonly exver: Exver, + private readonly router: Router, ) {} getKnownHosts$(filtered = false): Observable { @@ -149,32 +116,32 @@ export class MarketplaceService implements AbstractMarketplaceService { return filtered ? this.filteredKnownHosts$ : this.knownHosts$ } - getSelectedHost$(): Observable { - return this.selectedHost$ + getRegistryUrl$() { + return this.registryUrl$ } - getMarketplace$(filtered = false): Observable { - // option to filter out hosts containing 'alpha' or 'beta' substrings in registryURL - return filtered ? this.filteredMarketplace$ : this.marketplace$ + getRegistry$(): Observable { + return this.registry$ } - getSelectedRegistry$(): Observable { - return this.selectedRegistry$ + setRegistryUrl(url: string | null) { + const registryUrl = url || this.config.marketplace.start9 + this.router.navigate([], { + queryParams: { registry: url }, + queryParamsHandling: 'merge', + }) + this.registryUrlSubject$.next(registryUrl) } - getRegistry$() { - return this.selectedHost$.pipe( - switchMap(({ url }) => - this.marketplace$.pipe( - map(m => m[url]), - filter(Boolean), - map(({ info, packages }) => ({ - url, - info, - packages, - })), - ), - ), + private fetchRegistry$(url: string): Observable { + console.log('FETCHING REGISTRY: ', url) + return combineLatest([this.fetchInfo$(url), this.fetchPackages$(url)]).pipe( + map(([info, packages]) => ({ info, packages, url })), + catchError(e => { + console.error(e) + this.requestErrors$.next(this.requestErrors$.value.concat(url)) + return of(null) + }), ) } @@ -184,18 +151,17 @@ export class MarketplaceService implements AbstractMarketplaceService { flavor: string | null, registryUrl?: string, ): Observable { - return this.selectedHost$.pipe( - switchMap(selected => - this.marketplace$.pipe( - switchMap(m => { - const url = registryUrl || selected.url - const pkg = m[url]?.packages.find( + return this.registry$.pipe( + switchMap(({ url: selectedUrl }) => + this.registry$.pipe( + switchMap(registry => { + const url = registryUrl || selectedUrl + const pkg = registry.packages.find( p => p.id === id && p.flavor === flavor && (!version || this.exver.compareExver(p.version, version) === 0), ) - return pkg ? of(pkg) : this.fetchPackage$(url, id, version, flavor) }), ), @@ -247,17 +213,6 @@ export class MarketplaceService implements AbstractMarketplaceService { return from(this.api.getStaticProxy(pkg, type)) } - private fetchStore$(url: string): Observable { - return combineLatest([this.fetchInfo$(url), this.fetchPackages$(url)]).pipe( - map(([info, packages]) => ({ info, packages })), - catchError(e => { - console.error(e) - this.requestErrors$.next(this.requestErrors$.value.concat(url)) - return of(null) - }), - ) - } - private fetchPackages$(url: string): Observable { return from(this.api.getRegistryPackages(url)).pipe( map(packages => { diff --git a/web/projects/ui/src/app/services/patch-data.service.ts b/web/projects/ui/src/app/services/patch-data.service.ts index ae42987bd..35c86550e 100644 --- a/web/projects/ui/src/app/services/patch-data.service.ts +++ b/web/projects/ui/src/app/services/patch-data.service.ts @@ -1,14 +1,12 @@ -import { Inject, Injectable } from '@angular/core' -import { AbstractMarketplaceService } from '@start9labs/marketplace' +import { Injectable } from '@angular/core' import { TuiDialogService } from '@taiga-ui/core' -import { filter, share, switchMap, take, Observable, map } from 'rxjs' +import { filter, share, switchMap, Observable, map } from 'rxjs' import { PatchDB } from 'patch-db-client' import { DataModel } from 'src/app/services/patch-db/data-model' import { EOSService } from 'src/app/services/eos.service' import { WelcomeComponent } from 'src/app/components/welcome.component' import { ConfigService } from 'src/app/services/config.service' import { ApiService } from 'src/app/services/api/embassy-api.service' -import { MarketplaceService } from 'src/app/services/marketplace.service' import { ConnectionService } from 'src/app/services/connection.service' import { PolymorpheusComponent } from '@taiga-ui/polymorpheus' import { LocalStorageBootstrap } from './patch-db/local-storage-bootstrap' @@ -40,8 +38,6 @@ export class PatchDataService extends Observable { private readonly config: ConfigService, private readonly dialogs: TuiDialogService, private readonly embassyApi: ApiService, - @Inject(AbstractMarketplaceService) - private readonly marketplaceService: MarketplaceService, private readonly connection$: ConnectionService, private readonly bootstrapper: LocalStorageBootstrap, ) { @@ -50,7 +46,7 @@ export class PatchDataService extends Observable { private checkForUpdates(): void { this.eosService.loadEos() - this.marketplaceService.getMarketplace$().pipe(take(1)).subscribe() + // this.marketplaceService.getMarketplace$().pipe(take(1)).subscribe() } private showEosWelcome(ackVersion: string) { diff --git a/web/projects/ui/src/app/utils/system-utilities.ts b/web/projects/ui/src/app/utils/system-utilities.ts index 825904955..c726c8170 100644 --- a/web/projects/ui/src/app/utils/system-utilities.ts +++ b/web/projects/ui/src/app/utils/system-utilities.ts @@ -12,10 +12,10 @@ export const SYSTEM_UTILITIES: Record = icon: '@tui.shopping-cart', title: 'Marketplace', }, - '/portal/system/updates': { - icon: '@tui.globe', - title: 'Updates', - }, + // '/portal/system/updates': { + // icon: '@tui.globe', + // title: 'Updates', + // }, '/portal/system/sideload': { icon: '@tui.upload', title: 'Sideload',