import { Context } from "../context/Context"; import { IRule } from "./interface/IRule"; /* * use https://www.npmjs.com/package/validatorjs */ import { ERuleTypes } from "./enum/ERuleTypes"; import { ActionParams } from "../action/type/ActionParams"; import { BaseRule } from "./base/BaseRule"; import { ActiveProxyActionParams } from "../action/type/ActiveProxyActionParams"; import { CommonRules } from "./CommonRules"; export class ToggleVoiceRules extends BaseRule implements IRule { constructor(params: ActionParams){ super(params); } /*@overwrite*/ public validate(rules: Array, context: Context): boolean { let passes : any = []; rules.forEach(rule => { switch (rule) { case ERuleTypes.IS_AUDIO_TRACK_ENABLE: passes.push(this.isAudioTrackEnable(context)); break; case ERuleTypes.HAS_AUDIO_TRACK: passes.push(this.hasAudioTrack(context)); break; } }); if(passes.every((pass : boolean) => pass == true)){ this.passes = true; return true; }else{ this.fails = true; return false; } } public isAudioTrackEnable(context: Context): boolean { let track = context.getResources().getAudioTrack(); let enable : boolean = false; if(track){ enable = track.enabled; }else{ enable = false; } let data = { track: enable+"", }; let rules = { track: 'in:true' }; let messages = { "in.track":'Audio must be enable', }; return this.evaluate(data, rules, messages); } public hasAudioTrack(context: Context): boolean { let track = context.getResources().getAudioTrack(); let exist = false; if(track){ exist = true; } let data = { track: exist+"", }; let rules = { track: 'in:true' }; let messages = { "in.track":'Audio not available', }; return this.evaluate(data, rules, messages); } }