From: Andrew Gundersen Date: Thu, 20 Jan 2022 17:39:39 +0000 (-0600) Subject: reverting changes in polish manually X-Git-Url: https://andrewgundersen.net/repos?a=commitdiff_plain;h=fb148477307b3855e44ea1699c806e0e5e789f17;p=mime-chat reverting changes in polish manually --- diff --git a/src/render/components/app.js b/src/render/components/app.js index 78ab5da..37d5a1b 100644 --- a/src/render/components/app.js +++ b/src/render/components/app.js @@ -38,3 +38,6 @@ window.mainApi.on("set-account", (account_) => { 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 diff --git a/src/render/components/bubble.js b/src/render/components/bubble.js index 59e0417..1eaa48e 100644 --- a/src/render/components/bubble.js +++ b/src/render/components/bubble.js @@ -9,7 +9,7 @@ const Bubble = } Vue.onMounted(() => { - document.dispatchEvent(new CustomEvent("scroll")); + document.getElementById("messenger").dispatchEvent(new CustomEvent('adjust-scroll')); }); return { getUrl }; diff --git a/src/render/components/control/scroll.js b/src/render/components/control/scroll.js index db0dd3b..4666ea1 100644 --- a/src/render/components/control/scroll.js +++ b/src/render/components/control/scroll.js @@ -7,11 +7,13 @@ const initScroll = (elementId) => { } 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' diff --git a/src/render/components/messenger.js b/src/render/components/messenger.js index fe73263..6a1e9a2 100644 --- a/src/render/components/messenger.js +++ b/src/render/components/messenger.js @@ -1,5 +1,5 @@ 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"; @@ -22,24 +22,34 @@ const Messenger = { 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 }; @@ -67,6 +77,3 @@ const Messenger = { } export default Messenger; - -// Is called when window is about to close or reload -window.onbeforeunload = () => window.mainApi.send("message", {route: "window", open: true}); diff --git a/src/render/preload.js b/src/render/preload.js index e3c66f9..a2f3896 100644 --- a/src/render/preload.js +++ b/src/render/preload.js @@ -4,7 +4,7 @@ const { contextBridge, ipcRenderer } = require("electron"); const validFromMainChannels = [ "set-account", - "update", + "message", "ws-status", "record", "playback" diff --git a/src/session.js b/src/session.js index f786dcb..3d6ccdf 100644 --- a/src/session.js +++ b/src/session.js @@ -5,13 +5,22 @@ const { backgroundMitt, ipcEmit } = require("./utils/emitter"); 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) { @@ -19,15 +28,28 @@ function handleUpdateQueue() 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); } } } @@ -36,7 +58,7 @@ function launchSession(account) { connectToPlatform(account); // initAudio(); - processContentId = setInterval(handleUpdateQueue, 100); + processContentId = setInterval(handleMessageQueue, 100); } function endSession() @@ -46,5 +68,11 @@ function endSession() disconnectFromPlatform(); } +ipcMain.on("messenger", () => { + if (ui) { + ipcEmit("message", ui); + } +}); + exports.launchSession = launchSession; exports.endSession = endSession;