From 88afb756f5fa6d29df3a1bdcc9051feee8ebb3d3 Mon Sep 17 00:00:00 2001
From: Lucy C <12953208+elvece@users.noreply.github.com>
Date: Tue, 5 Jul 2022 13:02:32 -0600
Subject: [PATCH] show available marketplace updates in menu (#1613)
* show service updates in menu
---
.../list/categories/categories.component.html | 4 +-
.../list/categories/categories.component.ts | 2 +-
.../src/services/marketplace.service.ts | 2 +-
frontend/projects/ui/src/app/app.providers.ts | 2 +
.../app/global/services/patch-data.service.ts | 14 ++-
.../global/services/unread-toast.service.ts | 16 +--
.../ui/src/app/app/menu/menu.component.html | 20 +--
.../ui/src/app/app/menu/menu.component.scss | 4 -
.../ui/src/app/app/menu/menu.component.ts | 22 +++-
.../ui/src/app/app/menu/menu.module.ts | 1 -
.../marketplace-list/marketplace-list.page.ts | 6 +-
.../preferences/preferences.page.html | 38 +++---
.../preferences/preferences.page.ts | 6 -
.../services/api/embassy-mock-api.service.ts | 2 +-
.../ui/src/app/services/api/mock-patch.ts | 9 ++
.../src/app/services/marketplace.service.ts | 119 ++++++++++++------
.../src/app/services/server-config.service.ts | 2 +-
17 files changed, 162 insertions(+), 107 deletions(-)
diff --git a/frontend/projects/marketplace/src/pages/list/categories/categories.component.html b/frontend/projects/marketplace/src/pages/list/categories/categories.component.html
index 765ff32b0..61cbab592 100644
--- a/frontend/projects/marketplace/src/pages/list/categories/categories.component.html
+++ b/frontend/projects/marketplace/src/pages/list/categories/categories.component.html
@@ -7,5 +7,7 @@
(click)="switchCategory(cat)"
>
{{ cat }}
- ({{ updatesAvailable }})
+
+ ({{ updatesAvailable }})
+
diff --git a/frontend/projects/marketplace/src/pages/list/categories/categories.component.ts b/frontend/projects/marketplace/src/pages/list/categories/categories.component.ts
index 9a70ac376..3647bd23b 100644
--- a/frontend/projects/marketplace/src/pages/list/categories/categories.component.ts
+++ b/frontend/projects/marketplace/src/pages/list/categories/categories.component.ts
@@ -23,7 +23,7 @@ export class CategoriesComponent {
category = ''
@Input()
- updatesAvailable? = 0
+ updatesAvailable = 0
@Output()
readonly categoryChange = new EventEmitter()
diff --git a/frontend/projects/marketplace/src/services/marketplace.service.ts b/frontend/projects/marketplace/src/services/marketplace.service.ts
index 7521e5832..12d97f150 100644
--- a/frontend/projects/marketplace/src/services/marketplace.service.ts
+++ b/frontend/projects/marketplace/src/services/marketplace.service.ts
@@ -7,7 +7,7 @@ export abstract class AbstractMarketplaceService {
abstract getReleaseNotes(id: string): Observable>
- abstract getCategories(): Observable
+ abstract getCategories(): Observable>
abstract getPackages(): Observable
diff --git a/frontend/projects/ui/src/app/app.providers.ts b/frontend/projects/ui/src/app/app.providers.ts
index ae62cba18..702de3c57 100644
--- a/frontend/projects/ui/src/app/app.providers.ts
+++ b/frontend/projects/ui/src/app/app.providers.ts
@@ -14,10 +14,12 @@ import { GlobalErrorHandler } from './services/global-error-handler.service'
import { AuthService } from './services/auth.service'
import { LocalStorageService } from './services/local-storage.service'
import { DataModel } from './services/patch-db/data-model'
+import { FilterPackagesPipe } from '../../../marketplace/src/pipes/filter-packages.pipe'
const { useMocks } = require('../../../../config.json') as WorkspaceConfig
export const APP_PROVIDERS: Provider[] = [
+ FilterPackagesPipe,
FormBuilder,
IonNav,
{
diff --git a/frontend/projects/ui/src/app/app/global/services/patch-data.service.ts b/frontend/projects/ui/src/app/app/global/services/patch-data.service.ts
index 7e6bf0caf..f47f2a97c 100644
--- a/frontend/projects/ui/src/app/app/global/services/patch-data.service.ts
+++ b/frontend/projects/ui/src/app/app/global/services/patch-data.service.ts
@@ -1,4 +1,4 @@
-import { Injectable } from '@angular/core'
+import { Inject, Injectable } from '@angular/core'
import { ModalController } from '@ionic/angular'
import { Observable, of } from 'rxjs'
import { filter, share, switchMap, take, tap } from 'rxjs/operators'
@@ -11,6 +11,8 @@ import { OSWelcomePage } from 'src/app/modals/os-welcome/os-welcome.page'
import { ConfigService } from 'src/app/services/config.service'
import { ApiService } from 'src/app/services/api/embassy-api.service'
import { PatchMonitorService } from './patch-monitor.service'
+import { MarketplaceService } from 'src/app/services/marketplace.service'
+import { AbstractMarketplaceService } from '../../../../../../marketplace/src/services/marketplace.service'
// Get data from PatchDb after is starts and act upon it
@Injectable({
@@ -24,8 +26,8 @@ export class PatchDataService extends Observable {
filter(obj => !isEmptyObject(obj)),
take(1),
tap(({ ui }) => {
- // check for updates to EOS
- this.checkForEosUpdate(ui)
+ // check for updates to EOS and services
+ this.checkForUpdates(ui)
// show eos welcome message
this.showEosWelcome(ui['ack-welcome'])
}),
@@ -42,13 +44,17 @@ export class PatchDataService extends Observable {
private readonly config: ConfigService,
private readonly modalCtrl: ModalController,
private readonly embassyApi: ApiService,
+ @Inject(AbstractMarketplaceService)
+ private readonly marketplaceService: MarketplaceService,
) {
super(subscriber => this.stream$.subscribe(subscriber))
}
- private checkForEosUpdate(ui: UIData): void {
+ private checkForUpdates(ui: UIData): void {
if (ui['auto-check-updates'] !== false) {
this.eosService.getEOS()
+ this.marketplaceService.getPackages().pipe(take(1)).subscribe()
+ this.marketplaceService.getCategories().pipe(take(1)).subscribe()
}
}
diff --git a/frontend/projects/ui/src/app/app/global/services/unread-toast.service.ts b/frontend/projects/ui/src/app/app/global/services/unread-toast.service.ts
index 3daee2a55..3e2dee51e 100644
--- a/frontend/projects/ui/src/app/app/global/services/unread-toast.service.ts
+++ b/frontend/projects/ui/src/app/app/global/services/unread-toast.service.ts
@@ -1,19 +1,11 @@
import { Injectable } from '@angular/core'
import { Router } from '@angular/router'
-import {
- LoadingController,
- ToastController,
- ToastOptions,
-} from '@ionic/angular'
-import { EMPTY, merge, Observable, ObservableInput } from 'rxjs'
+import { ToastController, ToastOptions } from '@ionic/angular'
+import { EMPTY, Observable, ObservableInput } from 'rxjs'
import { filter, pairwise, switchMap, tap } from 'rxjs/operators'
-import { ErrorToastService } from '@start9labs/shared'
-
import { PatchDbService } from 'src/app/services/patch-db/patch-db.service'
-import { ConfigService } from 'src/app/services/config.service'
-import { ApiService } from 'src/app/services/api/embassy-api.service'
import { PatchDataService } from './patch-data.service'
-import { DataModel, ServerInfo } from 'src/app/services/patch-db/data-model'
+import { DataModel } from 'src/app/services/patch-db/data-model'
// Watch unread notification count to display toast
@Injectable()
@@ -64,8 +56,6 @@ export class UnreadToastService extends Observable {
private readonly router: Router,
private readonly patchData: PatchDataService,
private readonly patch: PatchDbService,
- private readonly config: ConfigService,
- private readonly embassyApi: ApiService,
private readonly toastCtrl: ToastController,
) {
super(subscriber => this.stream$.subscribe(subscriber))
diff --git a/frontend/projects/ui/src/app/app/menu/menu.component.html b/frontend/projects/ui/src/app/app/menu/menu.component.html
index 5cb829dc8..5de85cec1 100644
--- a/frontend/projects/ui/src/app/app/menu/menu.component.html
+++ b/frontend/projects/ui/src/app/app/menu/menu.component.html
@@ -5,9 +5,7 @@