From 3cd952bd4705c0143bd5acfa0bac833221e22385 Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Mon, 18 Oct 2021 11:58:42 +0200
Subject: [PATCH] [player] Use Unit constructor to initialize unit definition

---
 projects/player/src/app/app.component.ts | 35 ++++++++++++++----------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/projects/player/src/app/app.component.ts b/projects/player/src/app/app.component.ts
index 08291017c..a86a1783a 100644
--- a/projects/player/src/app/app.component.ts
+++ b/projects/player/src/app/app.component.ts
@@ -54,22 +54,27 @@ export class AppComponent implements OnInit {
     setTimeout(() => {
       // eslint-disable-next-line no-console
       console.log('player: onStart', message);
-      const unitDefinition: Unit = message.unitDefinition ? JSON.parse(message.unitDefinition) : {};
-      if (this.metaDataService.verifyUnitDefinitionVersion(unitDefinition.veronaModuleVersion)) {
-        this.playerConfig = message.playerConfig || {};
-        this.veronaPostService.sessionId = message.sessionId;
-        this.veronaPostService.stateReportPolicy = message.playerConfig?.stateReportPolicy || 'none';
-        this.pages = unitDefinition.pages;
-        this.unitStateService.unitStateElementCodes = message.unitState?.dataParts?.elementCodes ?
-          JSON.parse(message.unitState.dataParts.elementCodes) : [];
+      if (message.unitDefinition) {
+        const unitDefinition: Unit = new Unit(JSON.parse(message.unitDefinition));
+        if (this.metaDataService.verifyUnitDefinitionVersion(unitDefinition.veronaModuleVersion)) {
+          this.playerConfig = message.playerConfig || {};
+          this.veronaPostService.sessionId = message.sessionId;
+          this.veronaPostService.stateReportPolicy = message.playerConfig?.stateReportPolicy || 'none';
+          this.pages = unitDefinition.pages;
+          this.unitStateService.unitStateElementCodes = message.unitState?.dataParts?.elementCodes ?
+            JSON.parse(message.unitState.dataParts.elementCodes) : [];
+        } else {
+          this.dialog.open(AlertDialogComponent, {
+            data: {
+              title: this.translateService.instant('dialogTitle.wrongUnitDefinitionType'),
+              content: this.translateService.instant('dialogContent.wrongUnitDefinitionType',
+                { version: this.metaDataService.playerMetadata.supportedUnitDefinitionTypes })
+            }
+          });
+        }
       } else {
-        this.dialog.open(AlertDialogComponent, {
-          data: {
-            title: this.translateService.instant('dialogTitle.wrongUnitDefinitionType'),
-            content: this.translateService.instant('dialogContent.wrongUnitDefinitionType',
-              { version: this.metaDataService.playerMetadata.supportedUnitDefinitionTypes })
-          }
-        });
+        // eslint-disable-next-line no-console
+        console.warn('player: message has no unitDefinition');
       }
     });
   }
-- 
GitLab