add async text messages

This commit is contained in:
riqo 2021-02-13 17:02:14 -06:00
commit 4a24727131
5 changed files with 89 additions and 25 deletions

View file

@ -8,7 +8,7 @@ interface RenderMessage {
content: string;
context: string;
subContext: string;
modifiers: string;
modifier: string;
time: string;
id: string;
}
@ -66,11 +66,17 @@ const receiveMessage = (message: string): void => {
}
const parsed: RenderMessage = JSON.parse(message);
console.log('received message', parsed);
if (parsed.modifier === "sf") {
backgroundMitt.emit('message-res', parsed);
} else if (parsed.modifier === "ai"){
console.log('ai message')
backgroundMitt.emit('ipc-renderer', {
endpoint: 'render-message',
message: parsed
});
}
backgroundMitt.emit('ipc-renderer', {
endpoint: 'render-message',
message: parsed
});
};
export const sendMessage = (content: TextMessage | Buffer) => {
@ -81,6 +87,23 @@ export const sendMessage = (content: TextMessage | Buffer) => {
}
}
const asyncSend = (_event, payload: any): Promise<RenderMessage> => {
return new Promise((resolve, reject) => {
backgroundMitt.once('message-res', (res: RenderMessage) => {
console.log(res)
if (res.content) {
resolve(res);
} else {
reject()
}
});
socket.send(JSON.stringify(payload));
});
}
// Run every time we want to connect to backend.
export const initSession = () => {
@ -100,6 +123,10 @@ export const initSession = () => {
ipcMain.removeHandler('auth-session'); // avoid setting duplicate handlers
ipcMain.handle('auth-session', authSession);
// handle renderer send-message event
ipcMain.removeHandler('async-message'); // avoid setting duplicate handlers
ipcMain.handle('async-message', asyncSend);
// Connect to the backend.
socket.on('open', () => {
console.log('Connected to Crimata Servers.');