2026-04-29 17:41:36 +07:00
|
|
|
import { updateMachineStatus } from '../stores/machineInfoStore';
|
2026-04-03 17:25:27 +07:00
|
|
|
import { addNotification } from '../stores/noti';
|
2026-05-04 16:50:15 +07:00
|
|
|
import { handleIncomingMessages } from './messageHandler';
|
2026-04-03 17:25:27 +07:00
|
|
|
|
|
|
|
|
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
|
2026-05-04 16:50:15 +07:00
|
|
|
let raw_payload = payload.payload.toString();
|
|
|
|
|
|
|
|
|
|
if (raw_payload.startsWith('save_recipe_machine')) {
|
|
|
|
|
let res = raw_payload.split('/');
|
|
|
|
|
|
|
|
|
|
let pd = res[1] ?? '';
|
|
|
|
|
let action = res[2] ?? '';
|
|
|
|
|
let uiAction = res[3] ?? '';
|
|
|
|
|
|
|
|
|
|
handleIncomingMessages(
|
|
|
|
|
JSON.stringify({
|
|
|
|
|
type: 'ui_action',
|
|
|
|
|
payload: {
|
|
|
|
|
action: uiAction,
|
|
|
|
|
from: 'brew',
|
|
|
|
|
ref: `${pd}.${action}`
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
);
|
|
|
|
|
}
|
2026-04-03 17:25:27 +07:00
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case 'ACK':
|
|
|
|
|
// acknowledge response from app
|
|
|
|
|
if (payload.payload !== 'OK') {
|
|
|
|
|
// abnormal
|
|
|
|
|
console.error('error from ACK', payload.payload);
|
|
|
|
|
addNotification('ERR:Request rejected');
|
|
|
|
|
}
|
|
|
|
|
break;
|
2026-04-12 10:47:53 +07:00
|
|
|
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);
|
2026-04-29 16:05:10 +07:00
|
|
|
|
|
|
|
|
addNotification('INFO:Machine Status Updated, ' + next);
|
2026-04-29 17:41:36 +07:00
|
|
|
updateMachineStatus(next);
|
2026-04-12 10:47:53 +07:00
|
|
|
}
|
|
|
|
|
break;
|
2026-04-03 17:25:27 +07:00
|
|
|
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 };
|