import { store } from './store' import types from './types' import * as player from './live/player' let socket = io.connect('/client') // SOCKET ACTIONS socket.on('connect', () => store.dispatch({ type: types.socket.connect })) socket.on('connect_error', (error) => store.dispatch({ type: types.socket.connect_error, error })) socket.on('reconnect', (attempt) => store.dispatch({ type: types.socket.reconnect, attempt })) socket.on('reconnecting', () => store.dispatch({ type: types.socket.reconnecting })) socket.on('reconnect_error', (error) => store.dispatch({ type: types.socket.reconnect_error, error })) socket.on('reconnect_failed', (error) => store.dispatch({ type: types.socket.reconnect_failed, error })) socket.on('disconnect', () => store.dispatch({ type: types.socket.disconnect })) socket.on('error', (error) => store.dispatch({ type: types.socket.error, error })) socket.on('res', (data) => { console.log(data.cmd) switch (data.cmd) { case 'get_last_frame': if (data.res !== 'working') { socket.emit('cmd', { cmd: 'get_last_frame', }) } break case 'get_params': store.dispatch({ type: types.socket.load_params, opt: data.res, }) break case 'list_checkpoints': store.dispatch({ type: types.socket.list_checkpoints, checkpoints: data.res, }) break case 'list_sequences': store.dispatch({ type: types.socket.list_sequences, sequences: data.res, }) break case 'list_epochs': store.dispatch({ type: types.socket.list_epochs, epochs: data.res, }) break default: break } console.log(data) }) socket.on('system_res', (data) => { console.log('system response', data) switch (data.type) { case 'relay_connected': return store.dispatch({ type: types.system.relay_connected }) case 'relay_disconnected': return store.dispatch({ type: types.system.relay_disconnected }) case 'rpc_connected': return store.dispatch({ type: types.system.rpc_connected, runner: data.runner }) case 'rpc_disconnected': return store.dispatch({ type: types.system.rpc_disconnected }) case 'relay_status': return store.dispatch({ type: data.rpc_connected ? types.system.rpc_connected : types.system.rpc_disconnected, runner: data.runner }) case 'command_output': store.dispatch({ type: types.system.command_output, data: data, }) break } }) socket.on('frame', player.onFrame) socket.on('status', (data) => { console.log('got status', data.key, data.value) store.dispatch({ type: types.socket.status }) switch (data.key) { case 'processing': store.dispatch({ type: 'SET_PARAM', ...data, }) break default: break } }) export function list_checkpoints() { socket.emit('cmd', { cmd: 'list_checkpoints', }) } export function list_epochs(checkpoint_name) { socket.emit('cmd', { cmd: 'list_epochs', payload: checkpoint_name, }) } export function list_sequences() { socket.emit('cmd', { cmd: 'list_sequences', }) } export function load_epoch(checkpoint_name, epoch) { console.log(">> SWITCH CHECKPOINT", checkpoint_name, epoch) socket.emit('cmd', { cmd: 'load_epoch', payload: checkpoint_name + ':' + epoch, }) } export function load_sequence(sequence) { socket.emit('cmd', { cmd: 'load_sequence', payload: sequence, }) } export function seek(frame) { socket.emit('cmd', { cmd: 'seek', payload: frame, }) } export function pause(frame) { socket.emit('cmd', { cmd: 'pause', }) } export function play(frame) { socket.emit('cmd', { cmd: 'play', }) } export function get_params() { socket.emit('cmd', { cmd: 'get_params', }) } export function set_param(key, value) { socket.emit('cmd', { cmd: 'set_param', payload: { 'key': key, 'value': value, } }) } export function run_system_command(cmd) { socket.emit('system', { cmd: 'run_system_command', payload: cmd, }) } export { socket }