diff --git a/frontend/projects/diagnostic-ui/src/app/app.module.ts b/frontend/projects/diagnostic-ui/src/app/app.module.ts index 2e436e695..7625e9247 100644 --- a/frontend/projects/diagnostic-ui/src/app/app.module.ts +++ b/frontend/projects/diagnostic-ui/src/app/app.module.ts @@ -9,7 +9,7 @@ import { ApiService } from './services/api/api.service' import { MockApiService } from './services/api/mock-api.service' import { LiveApiService } from './services/api/live-api.service' import { GlobalErrorHandler } from './services/global-error-handler.service' -import { AbstractApiService, WorkspaceConfig } from '@start9labs/shared' +import { WorkspaceConfig } from '@start9labs/shared' const { useMocks } = require('../../../../config.json') as WorkspaceConfig @@ -30,10 +30,6 @@ const { useMocks } = require('../../../../config.json') as WorkspaceConfig provide: ApiService, useClass: useMocks ? MockApiService : LiveApiService, }, - { - provide: AbstractApiService, - useExisting: ApiService, - }, { provide: ErrorHandler, useClass: GlobalErrorHandler }, ], bootstrap: [AppComponent], diff --git a/frontend/projects/shared/src/components/markdown/markdown.component.ts b/frontend/projects/shared/src/components/markdown/markdown.component.ts index 0249a2179..74aa6e2a0 100644 --- a/frontend/projects/shared/src/components/markdown/markdown.component.ts +++ b/frontend/projects/shared/src/components/markdown/markdown.component.ts @@ -1,10 +1,9 @@ -import { Component, Input, Optional } from '@angular/core' +import { Component, Input } from '@angular/core' import { ModalController } from '@ionic/angular' +import { defer, isObservable, Observable, of } from 'rxjs' +import { catchError, ignoreElements, share } from 'rxjs/operators' import { getErrorMessage } from '../../services/error-toast.service' -import { AbstractApiService } from '../../services/api.service' -import { defer, from, isObservable, Observable, of } from 'rxjs' -import { catchError, ignoreElements, share } from 'rxjs/operators' @Component({ selector: 'markdown', @@ -12,11 +11,12 @@ import { catchError, ignoreElements, share } from 'rxjs/operators' styleUrls: ['./markdown.component.scss'], }) export class MarkdownComponent { - @Input() contentUrl?: string @Input() content?: string | Observable @Input() title = '' - private readonly data$ = defer(() => this.contentObservable).pipe(share()) + private readonly data$ = defer(() => + isObservable(this.content) ? this.content : of(this.content), + ).pipe(share()) readonly error$ = this.data$.pipe( ignoreElements(), @@ -25,23 +25,9 @@ export class MarkdownComponent { readonly content$ = this.data$.pipe(catchError(() => of([]))) - constructor( - private readonly modalCtrl: ModalController, - @Optional() - private readonly embassyApi: AbstractApiService | null, - ) {} + constructor(private readonly modalCtrl: ModalController) {} async dismiss() { return this.modalCtrl.dismiss(true) } - - private get contentObservable() { - if (isObservable(this.content)) { - return this.content - } - - return this.contentUrl - ? from(this.embassyApi?.getStatic(this.contentUrl)) - : of(this.content) - } } diff --git a/frontend/projects/shared/src/public-api.ts b/frontend/projects/shared/src/public-api.ts index 3287078fa..46cc94034 100644 --- a/frontend/projects/shared/src/public-api.ts +++ b/frontend/projects/shared/src/public-api.ts @@ -23,7 +23,6 @@ export * from './pipes/shared/trust.pipe' export * from './pipes/unit-conversion/unit-conversion.module' export * from './pipes/unit-conversion/unit-conversion.pipe' -export * from './services/api.service' export * from './services/destroy.service' export * from './services/emver.service' export * from './services/error-toast.service' diff --git a/frontend/projects/shared/src/services/api.service.ts b/frontend/projects/shared/src/services/api.service.ts deleted file mode 100644 index e88eae83f..000000000 --- a/frontend/projects/shared/src/services/api.service.ts +++ /dev/null @@ -1,4 +0,0 @@ -export abstract class AbstractApiService { - // for getting static files: ex icons, instructions, licenses - abstract getStatic(url: string): Promise -} diff --git a/frontend/projects/ui/src/app/pages/apps-routes/app-show/pipes/to-buttons.pipe.ts b/frontend/projects/ui/src/app/pages/apps-routes/app-show/pipes/to-buttons.pipe.ts index 696a597ea..0646e9067 100644 --- a/frontend/projects/ui/src/app/pages/apps-routes/app-show/pipes/to-buttons.pipe.ts +++ b/frontend/projects/ui/src/app/pages/apps-routes/app-show/pipes/to-buttons.pipe.ts @@ -5,6 +5,8 @@ import { AlertController, ModalController, NavController } from '@ionic/angular' import { MarkdownComponent } from '@start9labs/shared' import { PackageDataEntry } from 'src/app/services/patch-db/data-model' import { ModalService } from 'src/app/services/modal.service' +import { ApiService } from 'src/app/services/api/embassy-api.service' +import { from } from 'rxjs' export interface Button { title: string @@ -24,6 +26,7 @@ export class ToButtonsPipe implements PipeTransform { private readonly navCtrl: NavController, private readonly modalCtrl: ModalController, private readonly modalService: ModalService, + private readonly apiService: ApiService, ) {} transform(pkg: PackageDataEntry): Button[] { @@ -103,7 +106,9 @@ export class ToButtonsPipe implements PipeTransform { const modal = await this.modalCtrl.create({ componentProps: { title: 'Instructions', - contentUrl: pkg['static-files']['instructions'], + content: from( + this.apiService.getStatic(pkg['static-files']['instructions']), + ), }, component: MarkdownComponent, }) diff --git a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.ts b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.ts index e2b057c5f..dc2ecb8ff 100644 --- a/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.ts +++ b/frontend/projects/ui/src/app/pages/marketplace-routes/marketplace-list/marketplace-list.page.ts @@ -21,6 +21,7 @@ export class MarketplaceListPage { ).pipe( filter(data => exists(data) && !isEmptyObject(data)), tap(pkgs => Object.values(pkgs).forEach(spreadProgress)), + map(pkgs => ({ ...pkgs })), startWith({}), ) diff --git a/frontend/projects/ui/src/app/services/api/embassy-api.service.ts b/frontend/projects/ui/src/app/services/api/embassy-api.service.ts index 91210738e..d93adbbec 100644 --- a/frontend/projects/ui/src/app/services/api/embassy-api.service.ts +++ b/frontend/projects/ui/src/app/services/api/embassy-api.service.ts @@ -1,4 +1,3 @@ -import { AbstractApiService } from '@start9labs/shared' import { Subject, Observable } from 'rxjs' import { Http, @@ -14,10 +13,7 @@ import { DataModel } from 'src/app/services/patch-db/data-model' import { RequestError } from '../http.service' import { map } from 'rxjs/operators' -export abstract class ApiService - extends AbstractApiService - implements Source, Http -{ +export abstract class ApiService implements Source, Http { protected readonly sync$ = new Subject>() /** PatchDb Source interface. Post/Patch requests provide a source of patches to the db. */ @@ -28,6 +24,9 @@ export abstract class ApiService .pipe(map(result => ({ result, jsonrpc: '2.0' }))) } + // for getting static files: ex icons, instructions, licenses + abstract getStatic(url: string): Promise + // db abstract getRevisions(since: number): Promise