Add CREATE_PROCESS endpoint

This commit is contained in:
Sosthene 2025-08-27 17:54:02 +02:00
parent c8cf1b2efd
commit 8b11e0c80c

View File

@ -3,7 +3,7 @@ import { MessageType } from './models';
import { config } from './config';
import { Service } from './service';
import { ApiReturn, Process } from '../pkg/sdk_client';
import { EMPTY32BYTES } from './utils';
import { EMPTY32BYTES, splitPrivateData } from './utils';
interface ServerMessageEvent {
data: {
@ -42,6 +42,52 @@ class SimpleProcessHandlers {
return apiKey === this.apiKey;
}
async handleCreateProcess(event: ServerMessageEvent): Promise<ServerResponse> {
if (event.data.type !== MessageType.CREATE_PROCESS) {
throw new Error('Invalid message type');
}
if (!this.service.isPaired()) {
throw new Error('Device not paired');
}
try {
const { processData, privateFields, roles, exclusionRules, apiKey } = event.data;
if (!apiKey || !this.validateApiKey(apiKey)) {
throw new Error('Invalid API key');
}
const { privateData, publicData } = splitPrivateData(processData, privateFields);
const createProcessReturn = await this.service.createProcess(privateData, publicData, roles);
if (!createProcessReturn.updated_process) {
throw new Error('Empty updated_process in createProcessReturn');
}
console.log('🚀 ~ handleCreateProcess ~ createProcessReturn:', createProcessReturn);
const processId = createProcessReturn.updated_process.process_id;
const process = createProcessReturn.updated_process.current_process;
await this.service.handleApiReturn(createProcessReturn);
const processCreated = {
processId,
process,
processData,
}
return {
type: MessageType.PROCESS_CREATED,
processCreated,
messageId: event.data.messageId
};
} catch (e) {
const errorMessage = e instanceof Error ? e.message : String(e || 'Unknown error');
// Remove redundant "Error:" prefix and simplify the message
const cleanMessage = errorMessage.replace(/^Error:\s*/, '');
throw new Error(cleanMessage);
}
}
async handleNotifyUpdate(event: ServerMessageEvent): Promise<ServerResponse> {
if (event.data.type !== MessageType.NOTIFY_UPDATE) {
throw new Error('Invalid message type');
@ -281,6 +327,8 @@ class SimpleProcessHandlers {
async handleMessage(event: ServerMessageEvent): Promise<ServerResponse> {
try {
switch (event.data.type) {
case MessageType.CREATE_PROCESS:
return await this.handleCreateProcess(event);
case MessageType.NOTIFY_UPDATE:
return await this.handleNotifyUpdate(event);
case MessageType.VALIDATE_STATE: