From 1d4adc83369a172f408374986a6e7d66ef09bcaa Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Wed, 2 Nov 2022 10:28:02 +0100 Subject: [PATCH] [player] Move Geogebra ApiService functionality to MetaDataService - Use the VeroSubscriptionService as a pure communication service - Do not contaminate the VeroSubscriptionService with holding data --- .../verona/services/verona-subscription.service.ts | 5 ----- projects/player/src/app/app.module.ts | 5 ++--- projects/player/src/app/components/unit/unit.component.ts | 3 +++ projects/player/src/app/services/meta-data.service.ts | 8 +++++++- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/projects/player/modules/verona/services/verona-subscription.service.ts b/projects/player/modules/verona/services/verona-subscription.service.ts index f084e2cf6..48decd2ac 100644 --- a/projects/player/modules/verona/services/verona-subscription.service.ts +++ b/projects/player/modules/verona/services/verona-subscription.service.ts @@ -27,15 +27,10 @@ export class VeronaSubscriptionService { .subscribe((event: Event): void => this.handleMessage((event as MessageEvent).data as VopMessage)); } - getResourceURL(): string { - return this.resourceURL || 'assets'; - } - private handleMessage(messageData: VopMessage): void { switch (messageData.type) { case 'vopStartCommand': LogService.debug('player: _vopStartCommand ', messageData); - this.resourceURL = (messageData as VopStartCommand).playerConfig?.directDownloadUrl; this._vopStartCommand.next(messageData); break; case 'vopNavigationDeniedNotification': diff --git a/projects/player/src/app/app.module.ts b/projects/player/src/app/app.module.ts index aaf2d7d65..04c0e7cbe 100644 --- a/projects/player/src/app/app.module.ts +++ b/projects/player/src/app/app.module.ts @@ -8,7 +8,7 @@ import { OverlayModule } from '@angular/cdk/overlay'; import { SharedModule, APIService } from 'common/shared.module'; import { KeyInputModule } from 'player/modules/key-input/key-input.module'; import { UnitMenuModule } from 'player/modules/unit-menu/unit-menu.module'; -import { DeviceService } from './services/device.service'; +import { MetaDataService } from 'player/src/app/services/meta-data.service'; import { AppComponent } from './app.component'; import { PageComponent } from './components/page/page.component'; import { SectionComponent } from './components/section/section.component'; @@ -50,7 +50,6 @@ import { UnitComponent } from './components/unit/unit.component'; import { PageScrollButtonComponent } from './components/page-scroll-button/page-scroll-button.component'; import { ExternalAppGroupElementComponent } from './components/elements/external-app-group-element/external-app-group-element.component'; -import { VeronaSubscriptionService } from 'player/modules/verona/services/verona-subscription.service'; @NgModule({ declarations: [ @@ -100,7 +99,7 @@ import { VeronaSubscriptionService } from 'player/modules/verona/services/verona UnitMenuModule ], providers: [ - { provide: APIService, useExisting: VeronaSubscriptionService } + { provide: APIService, useExisting: MetaDataService } ] }) diff --git a/projects/player/src/app/components/unit/unit.component.ts b/projects/player/src/app/components/unit/unit.component.ts index 3af210012..c28478c56 100644 --- a/projects/player/src/app/components/unit/unit.component.ts +++ b/projects/player/src/app/components/unit/unit.component.ts @@ -11,6 +11,7 @@ import { VeronaPostService } from 'player/modules/verona/services/verona-post.se import { ElementModelElementCodeMappingService } from 'player/src/app/services/element-model-element-code-mapping.service'; +import { MetaDataService } from 'player/src/app/services/meta-data.service'; @Component({ selector: 'aspect-unit', @@ -22,6 +23,7 @@ export class UnitComponent implements OnInit { playerConfig: PlayerConfig = {}; constructor(public unitStateService: UnitStateService, + private metaDataService: MetaDataService, private veronaPostService: VeronaPostService, private veronaSubscriptionService: VeronaSubscriptionService, private elementModelElementCodeMappingService: ElementModelElementCodeMappingService, @@ -45,6 +47,7 @@ export class UnitComponent implements OnInit { this.pages = unitDefinition.pages; this.playerConfig = message.playerConfig || {}; LogService.info('player: unitStateElementCodes', this.unitStateService.elementCodes); + this.metaDataService.resourceURL = this.playerConfig.directDownloadUrl; this.veronaPostService.sessionId = message.sessionId; this.veronaPostService.stateReportPolicy = message.playerConfig?.stateReportPolicy || 'none'; this.unitStateService.elementCodes = message.unitState?.dataParts?.elementCodes ? diff --git a/projects/player/src/app/services/meta-data.service.ts b/projects/player/src/app/services/meta-data.service.ts index 3c5a5e4cd..2872536b6 100644 --- a/projects/player/src/app/services/meta-data.service.ts +++ b/projects/player/src/app/services/meta-data.service.ts @@ -1,11 +1,13 @@ import { Inject, Injectable } from '@angular/core'; import { DOCUMENT } from '@angular/common'; +import { VopMetaData } from 'player/modules/verona/models/verona'; @Injectable({ providedIn: 'root' }) export class MetaDataService { - playerMetadata!: any; + playerMetadata!: VopMetaData; + resourceURL: string | undefined; constructor(@Inject(DOCUMENT) private document: Document) { const playerMetadata: string | null | undefined = document.getElementById('meta_data')?.textContent; @@ -13,4 +15,8 @@ export class MetaDataService { this.playerMetadata = JSON.parse(playerMetadata); } } + + getResourceURL(): string { + return this.resourceURL || 'assets'; + } } -- GitLab