UNPKG

@applicaster/zapp-react-native-utils

Version:

Applicaster Zapp React Native utilities package

54 lines (42 loc) 1.49 kB
import { ISeekController, ISeekControllerDelegate, SeekIncrementalBaseStrategy, } from "./ISeekController"; import { SEEK_TYPE } from "../const"; import { log_debug } from "./TVSeekController"; interface TapPressConfig { CLICKS_BEFORE_PAUSE: number; } export class TapSeekController implements ISeekController { readonly title = "TapSeek"; constructor( private seekControllerDelegate: ISeekControllerDelegate, private seekIncrementalStrategy: SeekIncrementalBaseStrategy, private config: TapPressConfig ) {} onStartSeek = (seekType: SEEK_TYPE) => { log_debug(`${this.title}: start tap seek type: ${seekType}.`); const skipTime = this.seekIncrementalStrategy.getSkipTime(); const seekMultiplier = this.seekIncrementalStrategy.getSkipMultiplier(); if (seekMultiplier > this.config.CLICKS_BEFORE_PAUSE) { log_debug( `${this.title}: handle delayed seek type:${seekType} - skipTime: ${skipTime}, seekMultiplier: ${seekMultiplier}.` ); this.seekControllerDelegate.handleDelayedSeek(skipTime); } else { log_debug( `${this.title}: handle seek type:${seekType} - skipTime: ${skipTime}.` ); this.seekControllerDelegate.handleSeek(skipTime); } this.seekIncrementalStrategy.increment(); }; onSeekEnd = () => { this.seekControllerDelegate.handleSeekComplete(); }; reset = () => { log_debug("{this.title}: Reset states"); this.seekIncrementalStrategy.reset(); }; }