export default App;
export { account };
+
+// Is called when window is about to close or reload
+window.onbeforeunload = () => console.log("beforeunload");
\ No newline at end of file
}
Vue.onMounted(() => {
- document.dispatchEvent(new CustomEvent("scroll"));
+ document.getElementById("messenger").dispatchEvent(new CustomEvent('adjust-scroll'));
});
return { getUrl };
}
const isBottom = () => {
- return el.scrollHeight - el.clientHeight <= el.scrollTop + 1;
+ if (el) {
+ return el.scrollHeight - el.clientHeight <= el.scrollTop + 1;
+ }
}
const adjustScroll = () => {
- if (isBottom()) {
+ if (el) {
el.scrollTo({
top: el.scrollHeight - el.clientHeight,
behavior: 'smooth'
import onDrop from "./control/drop.js";
-import adjustScroll from "./control/scroll.js";
+import initScroll from "./control/scroll.js";
import WS from "./ws.js";
import Input from "./input.js";
Vue.onMounted(() => {
- window.mainApi.on("update", (update) => {
+ window.mainApi.on("message", (update) => {
- if (update.name)
+ if (update.person)
+ {
+ person.value = update.person;
+ messages.value = update.messages;
+ }
+ else if (update.name)
{
person.value = update;
}
- else if (message.content)
+ else if (update.content)
{
messages.value.push(update);
}
else
{
- messages.value.at(-1).content.push(update);
+ messages.value[messages.value.length - 1].content.push(update);
}
});
- window.mainApi.send("message", {route: "window", open: true});
+ initScroll("messenger");
+ window.mainApi.send("messenger");
+ });
+
+ Vue.onUnmounted(() => {
+ messages.value = [];
});
return { person, messages, onDrop };
}
export default Messenger;
-
-// Is called when window is about to close or reload
-window.onbeforeunload = () => window.mainApi.send("message", {route: "window", open: true});
const validFromMainChannels = [
"set-account",
- "update",
+ "message",
"ws-status",
"record",
"playback"
const { connectToPlatform, disconnectFromPlatform } = require("./io");
const { initAudio, terminateAudio, playback, streamState } = require("./audio");
+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 handleUpdateQueue()
+function handleMessageQueue()
{
if (!streamState.pb && !streamState.rec)
{
if (update)
{
- if (update.title)
+ if (update.person)
+ {
+ ui = update;
+ }
+ else if (update.name)
+ {
+ ui.person = update;
+ }
+ else if (update.content)
{
- new Notification(update).show();
+ ui.messages.push(update);
}
- else if (update.audio)
+ else if (update.category)
{
- playback(update);
+ ui.messages[ui.messages.length - 1].content.push(update);
}
- else { ipcEmit("update", update); }
+ else
+ {
+ new Notification(update).show(); return;
+ }
+
+ ipcEmit("message", update);
}
}
}
{
connectToPlatform(account);
// initAudio();
- processContentId = setInterval(handleUpdateQueue, 100);
+ processContentId = setInterval(handleMessageQueue, 100);
}
function endSession()
disconnectFromPlatform();
}
+ipcMain.on("messenger", () => {
+ if (ui) {
+ ipcEmit("message", ui);
+ }
+});
+
exports.launchSession = launchSession;
exports.endSession = endSession;