import types from '../types' import moment from 'moment' let FileSaver = require('file-saver') const systemInitialState = { loading: false, error: null, site: { name: 'Lens Cortex', }, server: { connected: false, status: "disconnected", error: null, }, relay: { connected: false, status: "unknown", error: null, }, rpc: { connected: false, status: "unknown", cpu_cmd: "unknown", gpu_cmd: "unknown", error: null, }, cmd: { loading: false, loaded: false, name: null, error: null, stdout: "", stderr: "", }, stdout: "", stderr: "", } const systemReducer = (state = systemInitialState, action) => { switch(action.type) { case types.socket.connect: case types.socket.reconnecting: return { ...state, server: { status: 'connected', connected: true, error: null, }, } case types.socket.reconnect: return { ...state, server: { status: 'reconnecting (attempt ' + action.attempt + ')', connected: false, error: null, }, } case types.socket.connect_error: case types.socket.reconnect_error: case types.socket.disconnect: case types.socket.reconnect_failed: return { ...state, server: { status: 'disconnected', connected: false, error: action.error || null, }, } case types.socket.error: return { ...state, server: { ...state.socket, error: action.error, }, } case types.system.relay_connected: return { ...state, relay: { status: 'connected', connected: true, error: null, } } case types.system.relay_disconnected: return { ...state, relay: { status: 'disconnected', connected: false, error: null, }, rpc: { status: 'disconnected', connected: false, error: null, }, } case types.system.rpc_connected: return { ...state, rpc: { status: 'connected', connected: true, error: null, } } case types.system.rpc_connected: return { ...state, rpc: { status: 'disconnected', connected: false, error: null, } } case types.system.running_command: return { ...state, cmd: { loading: true, loaded: false, name: action.cmd, error: null, stdout: null, stderr: null, } } case types.system.command_output: return { ...state, cmd: { loading: false, loaded: true, name: action.data.cmd, error: action.data.error, stdout: action.data.stdout, stderr: action.data.stderr, } } case types.task.task_begin: return { ...state, stdout: "", stderr: "", } case types.system.stdout: return { ...state, stdout: state.stdout + action.data, } case types.system.stderr: return { ...state, stderr: state.stderr + action.data, } default: return state } } export default systemReducer