@applicaster/zapp-react-native-utils
Version:
Applicaster Zapp React Native utilities package
54 lines (42 loc) • 1.49 kB
text/typescript
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();
};
}