90 lines
2.2 KiB
JavaScript
90 lines
2.2 KiB
JavaScript
const { Notification, ipcMain } = require("electron");
|
|
|
|
const store = require("./utils/store");
|
|
const { backgroundMitt, ipcEmit } = require("./utils/emitter");
|
|
const { connectToPlatform, disconnectFromPlatform } = require("./io");
|
|
const { initAudio, terminateAudio, playback, streamState } = require("./audio");
|
|
|
|
const util = require('util');
|
|
let ui;
|
|
|
|
const messageQueue = [];
|
|
|
|
let processContentId;
|
|
|
|
/* Possible messages:
|
|
* - New UI (set ui)
|
|
* - New message (add message to ui.messages)
|
|
* - New content (add content to existing message)
|
|
* - Update person
|
|
* - Notification
|
|
*/
|
|
backgroundMitt.on("message", (message) => messageQueue.push(message));
|
|
|
|
function handleMessageQueue()
|
|
{
|
|
if (!streamState.pb && !streamState.rec)
|
|
{
|
|
const update = messageQueue.shift();
|
|
|
|
if (update)
|
|
{
|
|
if (update.person)
|
|
{
|
|
ui = update;
|
|
}
|
|
else if (update.name)
|
|
{
|
|
ui.person = update;
|
|
}
|
|
else if (update.modifier)
|
|
{
|
|
ui.messages.push(update);
|
|
}
|
|
else if (update.category)
|
|
{
|
|
search(update.message).content.push(update);
|
|
}
|
|
else if (update.title)
|
|
{
|
|
new Notification(update).show(); return;
|
|
}
|
|
else if (update.context)
|
|
{
|
|
search(update.message).context = update.context;
|
|
}
|
|
else if (update.text) /* Update the text of last message */
|
|
{
|
|
search(update.message).content.at(-1).text = update.text;
|
|
}
|
|
|
|
ipcEmit("message", update);
|
|
}
|
|
}
|
|
}
|
|
|
|
const search = (id) => ui.messages.find(m => m.id == id);
|
|
|
|
function launchSession(account)
|
|
{
|
|
connectToPlatform(account);
|
|
initAudio();
|
|
processContentId = setInterval(handleMessageQueue, 100);
|
|
}
|
|
|
|
function endSession()
|
|
{
|
|
clearInterval(processContentId);
|
|
terminateAudio();
|
|
disconnectFromPlatform();
|
|
ui = null;
|
|
}
|
|
|
|
ipcMain.on("messenger", () => {
|
|
if (ui) {
|
|
ipcEmit("message", ui);
|
|
}
|
|
});
|
|
|
|
exports.launchSession = launchSession;
|
|
exports.endSession = endSession;
|