112 lines
2.1 KiB
JavaScript
112 lines
2.1 KiB
JavaScript
import { makeAutoObservable } from "mobx"
|
|
|
|
//configure ({empceActions: true})
|
|
|
|
export const
|
|
NONE = 0,
|
|
CRASHES = 1,
|
|
NETWORK = 2,
|
|
LOGS = 3,
|
|
EVENTS = 4,
|
|
CUSTOM = 5,
|
|
PERFORMANCE = 6;
|
|
|
|
export function createToolPanelState() {
|
|
return makeAutoObservable({
|
|
key: NONE,
|
|
toggle(key) { // auto-bind??
|
|
this.key = this.key === key ? NONE : key;
|
|
},
|
|
close() {
|
|
this.key = NONE;
|
|
},
|
|
});
|
|
}
|
|
|
|
|
|
export function createToggleState() {
|
|
return makeAutoObservable({
|
|
enabled: false,
|
|
toggle(flag) {
|
|
this.enabled = typeof flag === 'boolean'
|
|
? flag
|
|
: !this.enabled;
|
|
},
|
|
enable() {
|
|
this.enabled = true;
|
|
},
|
|
disable() {
|
|
this.enabled = false;
|
|
},
|
|
});
|
|
}
|
|
|
|
const SPEED_STORAGE_KEY = "__$player-speed$__";
|
|
//const SKIP_STORAGE_KEY = "__$player-skip$__";
|
|
//const initialSkip = !!localStorage.getItem(SKIP_STORAGE_KEY);
|
|
|
|
export const
|
|
INITIALIZING = 0,
|
|
PLAYING = 1,
|
|
PAUSED = 2,
|
|
COMPLETED = 3,
|
|
SOCKET_ERROR = 5;
|
|
|
|
export const
|
|
PORTRAIT = 1,
|
|
LANDSCAPE = 2;
|
|
|
|
export function createPlayerState(state) {
|
|
const storedSpeed = +localStorage.getItem(SPEED_STORAGE_KEY);
|
|
const initialSpeed = [1,2,3].includes(storedSpeed) ? storedSpeed : 1;
|
|
|
|
return makeAutoObservable({
|
|
status: INITIALIZING,
|
|
_statusSaved: null,
|
|
setTime(t) {
|
|
this.time = t
|
|
},
|
|
time: 0,
|
|
endTime: 0,
|
|
setStatus(status) {
|
|
this.status = status;
|
|
},
|
|
get initializing() {
|
|
return this.status === INITIALIZING;
|
|
},
|
|
get playing() {
|
|
return this.status === PLAYING;
|
|
},
|
|
get completed() {
|
|
return this.status === COMPLETED;
|
|
},
|
|
_buffering: false,
|
|
get buffering() {
|
|
return this._buffering;
|
|
},
|
|
setBufferingState(flag = true) {
|
|
this._buffering = flag;
|
|
},
|
|
speed: initialSpeed,
|
|
setSpeed(speed) {
|
|
localStorage.setItem(SPEED_STORAGE_KEY, speed);
|
|
this.speed = speed;
|
|
},
|
|
width: 360,
|
|
height: 780,
|
|
orientation: PORTRAIT,
|
|
get orientationLandscape() {
|
|
return this.orientation === LANDSCAPE;
|
|
},
|
|
setSize(width, height) {
|
|
if (height < 0 || width < 0) {
|
|
console.log("Player: wrong non-positive size")
|
|
return;
|
|
}
|
|
this.width = width;
|
|
this.height = height;
|
|
this.orientation = width > height ? LANDSCAPE : PORTRAIT;
|
|
},
|
|
...state,
|
|
});
|
|
}
|