From 7abdb3484628d04339bce932d136915b69377431 Mon Sep 17 00:00:00 2001
From: jojohoch <joachim.hoch@iqb.hu-berlin.de>
Date: Fri, 5 Nov 2021 10:40:05 +0100
Subject: [PATCH] Refactor timeouts and aspect-player detection in control bar

---
 .../control-bar/control-bar.component.ts      | 21 +++++++++++--------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/projects/common/element-components/control-bar/control-bar.component.ts b/projects/common/element-components/control-bar/control-bar.component.ts
index 5159636a8..256b156b3 100644
--- a/projects/common/element-components/control-bar/control-bar.component.ts
+++ b/projects/common/element-components/control-bar/control-bar.component.ts
@@ -1,5 +1,5 @@
 import {
-  Component, EventEmitter, Input, OnDestroy, OnInit, Output
+  OnInit, AfterContentInit, OnDestroy, Component, EventEmitter, Input, Output
 } from '@angular/core';
 import { MatSliderChange } from '@angular/material/slider';
 import { AudioElement } from '../../models/audio-element';
@@ -11,7 +11,7 @@ import { ValueChangeElement } from '../../models/uI-element';
   templateUrl: './control-bar.component.html',
   styleUrls: ['./control-bar.component.css']
 })
-export class ControlBarComponent implements OnInit, OnDestroy {
+export class ControlBarComponent implements OnInit, AfterContentInit, OnDestroy {
   @Input() player!: HTMLVideoElement | HTMLAudioElement;
   @Input() elementModel!: AudioElement | VideoElement;
   @Output() playbackTimeChanged = new EventEmitter<ValueChangeElement>();
@@ -36,7 +36,6 @@ export class ControlBarComponent implements OnInit, OnDestroy {
   // minRuns: number; // 1
 
   ngOnInit(): void {
-    this.checkEnvironment();
     // Firefox has problems to get the duration
     this.player.ondurationchange = () => this.initTimeValues();
     this.player.ontimeupdate = () => {
@@ -66,6 +65,10 @@ export class ControlBarComponent implements OnInit, OnDestroy {
       this.player.muted = !this.player.volume;
     };
     this.lastVolume = this.player.volume;
+  }
+
+  ngAfterContentInit(): void {
+    this.isAspectPlayer = !!this.player.closest('player-aspect');
     if (this.isAspectPlayer) {
       this.initAutostart();
       this.initHint();
@@ -109,10 +112,6 @@ export class ControlBarComponent implements OnInit, OnDestroy {
     event.preventDefault();
   }
 
-  private checkEnvironment() {
-    this.isAspectPlayer = !!this.player.closest('player-aspect');
-  }
-
   private checkStatus(runCounter: number): boolean {
     this.disabled = !this.elementModel.maxRuns ? false : this.elementModel.maxRuns <= runCounter;
     return this.disabled;
@@ -121,7 +120,9 @@ export class ControlBarComponent implements OnInit, OnDestroy {
   private initAutostart(): void {
     if (this.elementModel.autostart && !this.started) {
       setTimeout(() => {
-        this._play();
+        if (!this.started) {
+          this._play();
+        }
       }, this.elementModel.autostartDelay);
     }
   }
@@ -129,7 +130,9 @@ export class ControlBarComponent implements OnInit, OnDestroy {
   private initHint(): void {
     if (this.elementModel.hintLabel && !this.started) {
       setTimeout(() => {
-        this.showHint = true;
+        if (!this.started) {
+          this.showHint = true;
+        }
       }, this.elementModel.hintLabelDelay);
     }
   }
-- 
GitLab