import {EventEmitter, Injectable} from '@angular/core'; import {ChallengeService} from './challenge.service'; import {filter} from 'rxjs/operators'; import {MicroLessonMetricsService} from './metrics/micro-lesson-metrics.service'; import {ScreenTypeOx, SurpriseInfo} from 'ox-types'; @Injectable({ providedIn: 'root' }) export class SurpriseService { // This is per exercise. private currentSurprisesUsed: SurpriseInfo[]; surprise: EventEmitter; constructor(private challengeService: ChallengeService, private metricsService: MicroLessonMetricsService) { this.currentSurprisesUsed = []; this.surprise = new EventEmitter(); this.challengeService.currentExercise.pipe(filter(x => x !== undefined)) .subscribe(x => this.currentSurprisesUsed = []); } onSurpriseUsed(surpriseName: string, fromScreen: ScreenTypeOx, eventType: 'start' | 'end') { if (eventType === 'start') { const current = this.currentSurprisesUsed.find(x => x.surpriseName === surpriseName); if (current) { current.uses++; this.sendSurpriseUseToWumbox(current); } else { const info: SurpriseInfo = {surpriseName, uses: 1, fromScreen, eventType}; this.currentSurprisesUsed.push(info); this.sendSurpriseUseToWumbox(info); } if (fromScreen === ScreenTypeOx.Game) { console.log('TODO FIX SURPRISE SERVICE'); console.log('TODO FIX SURPRISE SERVICE'); console.log('TODO FIX SURPRISE SERVICE'); // this.metricsService.updateSurpriseMetric(this.currentSurprisesUsed); } } else { this.sendSurpriseUseToWumbox({surpriseName, fromScreen, eventType}); } } private sendSurpriseUseToWumbox(info: SurpriseInfo) { this.surprise.emit(info); } }