feat(ui/tracker/player): small fixes feat(ui/tracker/player): fix incoming streams feat(tracker): some logs feat(tracker): fix types, fix stream binding feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): more stuff for multicall... feat(tracker): rm async feat(tracker): rewrite stuff feat(tracker): rewrite stuff feat(tracker): rewrite stuff feat(tracker): rewrite stuff feat(tracker): rewrite stuff feat(tracker): rewrite lstream feat(tracker): rewrite lstream feat(tracker): rewrite stuff feat(tracker): rewrite stuff feat(tracker): fix group call feat(tracker): fix group call feat(tracker): fix group call feat(tracker): fix group call feat(tracker): add text to ui feat(tracker): destroy calls obj on call end feat(tracker): rm unused prop fix(tracker-assist):simplify addRemoteStream logic fixup! fix(tracker-assist):simplify addRemoteStream logic refactor(tracker-assist): make multi-agents call logic more explicite => fixed few bugs
94 lines
3.2 KiB
JavaScript
94 lines
3.2 KiB
JavaScript
import Player from './Player';
|
|
import { update, clean as cleanStore, getState } from './store';
|
|
import { clean as cleanLists } from './lists';
|
|
|
|
/** @type {Player} */
|
|
let instance = null;
|
|
|
|
const initCheck = method => (...args) => {
|
|
if (instance === null) {
|
|
console.error("Player method called before Player have been initialized.");
|
|
return;
|
|
}
|
|
return method(...args);
|
|
}
|
|
|
|
|
|
let autoPlay = true;
|
|
document.addEventListener("visibilitychange", function() {
|
|
if (instance === null) return;
|
|
if (document.hidden) {
|
|
const { playing } = getState();
|
|
autoPlay = playing
|
|
if (playing) {
|
|
instance.pause();
|
|
}
|
|
} else if (autoPlay) {
|
|
instance.play();
|
|
}
|
|
});
|
|
|
|
export function init(session, config, live = false) {
|
|
// const live = session.live;
|
|
const endTime = !live && session.duration.valueOf();
|
|
|
|
instance = new Player(session, config, live);
|
|
update({
|
|
initialized: true,
|
|
live,
|
|
livePlay: live,
|
|
endTime, // : 0, //TODO: through initialState
|
|
session,
|
|
});
|
|
|
|
if (!document.hidden) {
|
|
instance.play();
|
|
}
|
|
}
|
|
|
|
export function clean() {
|
|
if (instance === null) return;
|
|
instance.clean();
|
|
cleanStore();
|
|
cleanLists();
|
|
instance = null;
|
|
}
|
|
export const jump = initCheck((...args) => instance.jump(...args));
|
|
|
|
export const togglePlay = initCheck((...args) => instance.togglePlay(...args));
|
|
export const pause = initCheck((...args) => instance.pause(...args));
|
|
export const toggleSkip = initCheck((...args) => instance.toggleSkip(...args));
|
|
export const toggleSkipToIssue = initCheck((...args) => instance.toggleSkipToIssue(...args));
|
|
export const updateSkipToIssue = initCheck((...args) => instance.updateSkipToIssue(...args));
|
|
export const toggleAutoplay = initCheck((...args) => instance.toggleAutoplay(...args));
|
|
export const toggleSpeed = initCheck((...args) => instance.toggleSpeed(...args));
|
|
export const toggleEvents = initCheck((...args) => instance.toggleEvents(...args));
|
|
export const speedUp = initCheck((...args) => instance.speedUp(...args));
|
|
export const speedDown = initCheck((...args) => instance.speedDown(...args));
|
|
export const attach = initCheck((...args) => instance.attach(...args));
|
|
export const markElement = initCheck((...args) => instance.marker && instance.marker.mark(...args));
|
|
export const scale = initCheck(() => instance.scale());
|
|
export const toggleInspectorMode = initCheck((...args) => instance.toggleInspectorMode(...args));
|
|
/** @type {Player.assistManager.call} */
|
|
export const callPeer = initCheck((...args) => instance.assistManager.call(...args))
|
|
/** @type {Player.assistManager.setCallArgs} */
|
|
export const setCallArgs = initCheck((...args) => instance.assistManager.setCallArgs(...args))
|
|
export const requestReleaseRemoteControl = initCheck((...args) => instance.assistManager.requestReleaseRemoteControl(...args))
|
|
export const markTargets = initCheck((...args) => instance.markTargets(...args))
|
|
export const activeTarget = initCheck((...args) => instance.activeTarget(...args))
|
|
export const toggleAnnotation = initCheck((...args) => instance.assistManager.toggleAnnotation(...args))
|
|
|
|
export const Controls = {
|
|
jump,
|
|
togglePlay,
|
|
pause,
|
|
toggleSkip,
|
|
toggleSkipToIssue,
|
|
updateSkipToIssue,
|
|
toggleAutoplay,
|
|
toggleEvents,
|
|
toggleSpeed,
|
|
speedUp,
|
|
speedDown,
|
|
callPeer
|
|
}
|