import { updateMachineStatus } from '../stores/machineInfoStore'; import { addNotification } from '../stores/noti'; type AdbPayload = { type: string; payload: any }; async function handleAdbPayload(raw_payload: string) { console.log('get payload', raw_payload); try { const payload: AdbPayload = JSON.parse(raw_payload); switch (payload.type) { case 'log': let log_level = payload.payload['level'] ?? 'INFO'; let log_message = payload.payload['msg'] ?? ''; if (log_message !== '') addNotification(`${log_level}`); break; case 'response': if (payload.payload instanceof String) { // single message response } break; case 'ACK': // acknowledge response from app if (payload.payload !== 'OK') { // abnormal console.error('error from ACK', payload.payload); addNotification('ERR:Request rejected'); } break; case 'machine': // machine state if (payload.payload) { let states = payload.payload.split('/'); let curr = states[0].replace('MACHINE_STATE_', ''); let next = states[1].replace('MACHINE_STATE_', ''); console.log('current state', curr, 'next state', next); addNotification('INFO:Machine Status Updated, ' + next); updateMachineStatus(next); } break; case 'error': // show error to user from brew app addNotification(`ERR:${payload.payload}`); // send message to server if needed break; default: } } catch (error: any) { // invalid format } } export { handleAdbPayload };