]> Repos - mime-chat/commitdiff
bux fixes, profile initials
authorAndrew Gundersen <gundersena@xavier.edu>
Thu, 18 Nov 2021 15:42:05 +0000 (09:42 -0600)
committerAndrew Gundersen <gundersena@xavier.edu>
Thu, 18 Nov 2021 15:42:05 +0000 (09:42 -0600)
12 files changed:
src/account.js
src/audio.js
src/render/components/bubble.js
src/render/components/context.js
src/render/components/control/draggify.js
src/render/components/control/text.js
src/render/components/input.js
src/render/components/message.js
src/render/components/messenger.js
src/render/components/ws.js
src/render/preload.js
src/session.js

index 378bcdb2dd27e32a24b14f8d92f87dab5d613544..4a0ffe8b8c265d033435210f6e1f3d5607f5ad1d 100644 (file)
@@ -5,6 +5,10 @@ const { postLogin } = require("./api");
 const { ipcEmit } = require("./utils/emitter");
 const { launchSession, endSession } = require("./session");
 
+// store.set("account", "smith12@gmail.com");
+store.set("account", "gundersena@crimata.com");
+// store.delete("account");
+
 async function login(_e, email, password) 
 {
     const res = await postLogin(email, password);
index 3ed4bd13685846d779b8c11e6518a3bb2b9cb98a..b87940908b7b062f629e39cba4bf5206ce97467c 100644 (file)
@@ -85,8 +85,13 @@ function playback(base64String, id)
 function terminateAudio()
 {
     globalShortcut.unregisterAll();
-    clearInterval(setStreamsId);
-    nodeAudio.core.Terminate();
+
+    /* Only terminate PA if initialized */
+    if (setStreamsId)
+    {
+        clearInterval(setStreamsId);
+        nodeAudio.core.Terminate();
+    }
 }
 
 function setRecordingStatus(status)
index c4949e438f4138f686273dfe7c65ffc6570874bb..7ceaadc5cdbc647c8ffd3101e99156eea0d39b69 100644 (file)
@@ -2,6 +2,19 @@ const Bubble =
 {
     props: ["modifier", "text", "child"],
 
+    setup(props)
+    {
+        Vue.onMounted(() => {
+
+            const messengerEl = document.getElementById("messenger");
+
+            if (messengerEl) {
+                messengerEl.dispatchEvent(new CustomEvent('adjust-scroll'));
+            }
+
+        });
+    },
+
     template: `
         <div :class="'bubble ' + modifier + '-bubble ' + modifier +'-'+ child">
             {{ text }}
index 374c1f2979cc2a57b68bda921830036296913e00..859fe4db3c5d1ff6ca442bdbb04412c800306fb3 100644 (file)
@@ -21,7 +21,7 @@ const Context =
         <span :class="'context ' + modifier + '-context'">
 
             <div 
-                v-if="avatar != 'False'"
+                v-show="avatar"
                 class="context-avatar"
                 :class="{ audio: playback }"
             >      
index e7545a02eaab576bbd63dfa081524f5413018b9d..f85b9305e115dcf17239bccff1162110a09ee816 100644 (file)
@@ -95,7 +95,6 @@ function draggify(elementId, margin) {
     const onMouseUp = (e) => {
       e.preventDefault();
 
-      console.log("onMouseUp");
       window.removeEventListener('mousemove', onMouseMove);
       window.removeEventListener('mouseup', onMouseUp);
 
index e1a525038738b229fe9fc6a6ebc4999a0a7c078a..9439df8815cd182cd5b62e504bc3813354f6df4c 100644 (file)
@@ -47,7 +47,7 @@ function useText(elementId, left, typing)
             if (e.key === "Enter" && el.value)
             {
                 window.mainApi.send("message", { 
-                    text: el.value, audio: false });
+                    text: el.value, audio: null });
                 show.value = false;
             }
         });
@@ -56,7 +56,7 @@ function useText(elementId, left, typing)
 
     Vue.watch(left, calcSide);
 
-    Vue.watch(show, (c, p_) => {
+    Vue.watch(show, (c, _p) => {
         if (c) { 
             el.focus();
         } else { 
index 137f4433efac5ffa5cd0d8928ebdf96fb2027360..0bfe8e7f406d0386ddd03f67ce14bc0165edefce 100644 (file)
@@ -3,8 +3,12 @@ import draggify from "./control/draggify.js";
 
 const Input = 
 {
-    setup()
+    props: ["person"],
+
+    setup(props)
     {
+        const initials = Vue.ref("");
+
         const recording = Vue.ref(false);
 
         const { elementX, elementY } =  draggify("input", 15);
@@ -13,7 +17,9 @@ const Input =
 
         window.mainApi.on("record", (status) => recording.value = status);
 
-        return { elementX, elementY, recording, leftSide, show };
+        Vue.watch(() => props.person, (c, _p) => initials.value = getInitials(c));
+
+        return { initials, elementX, elementY, recording, leftSide, show };
     },
 
     template: `
@@ -21,7 +27,7 @@ const Input =
             :style="{ top: elementY + 'px', left: elementX + 'px' }"
         >
 
-            <div id="input-icon"></div>
+            <div id="input-icon">{{ initials }}</div>
 
             <input 
                 id="input-text" type="text"
@@ -35,5 +41,17 @@ const Input =
         </div> `
 }
 
+function getInitials(name)
+{
+    let rgx = new RegExp(/(\p{L}{1})\p{L}+/, 'gu');
+
+    let initials = [...name.matchAll(rgx)] || [];
+
+    return (
+      (initials.shift()?.[1] || '') + (initials.pop()?.[1] || '')
+    ).toUpperCase();
+}
+
 export default Input;
 
+
index de822e2ee2f80f91950aa2e987a262d93f41072c..28605c5cf3263ac4799b99fcdf8c050fb65e0b76 100644 (file)
@@ -12,16 +12,6 @@ const Message =
 
     setup(props)
     {
-        Vue.onMounted(() => {
-
-            const messengerEl = document.getElementById("messenger");
-
-            if (messengerEl) {
-                messengerEl.dispatchEvent(new CustomEvent('adjust-scroll'));
-            }
-
-        });
-
         return { calcChild };
     },
 
index 515190765374fc40c7c8a0e85473b8bd2c482b8e..aa07e2909e2e083849e645173b6916990320f70c 100644 (file)
@@ -16,16 +16,23 @@ const Messenger = {
 
     setup()
     {
+        const person = Vue.ref("");
         const messages = Vue.ref([]);
 
         Vue.onMounted(() => {
 
             window.mainApi.on("ui-init", (ui) => {
-                messages.value = ui;
+                person.value = ui.person;
+                messages.value = ui.messages;
             });
 
             window.mainApi.on("ui-update", (message) => {
-                console.log(message)
+
+                if (message.hasOwnProperty("person"))
+                {
+                    person.value = message.person;
+                    return;
+                }
 
                 let index = messages.value.findIndex(m => m.id===message.id);
                 if (index >= 0) 
@@ -47,13 +54,13 @@ const Messenger = {
             messages.value = [];
         });
 
-        return { messages };
+        return { person, messages };
     },
 
     template: `
         <Settings />
         <WS />
-        <Input/>
+        <Input :person="person" />
 
         <div id="messenger">
             <Message
index fac062239d283e95c408f294f98f23ea4eaf1fd2..189b03dd6fa9d2c29a682f2f781df539b07629a5 100644 (file)
@@ -9,7 +9,6 @@ const WS =
 
             window.mainApi.on("ws-status", (val) => {
                 status.value = val;
-                console.log(status.value);
             });
 
         }); 
index a2dded6d921057a13f32cf857d9d5c148f004c4c..93bd7e65124af0bde23ee7d2899c964bb8dc96c2 100644 (file)
@@ -50,4 +50,4 @@ contextBridge.exposeInMainWorld(
             ipcRenderer.removeAllListeners(channel);
         }
     }
-);
\ No newline at end of file
+);
index b4a1814720054ae850695b23aaaca1b9e59c2629..b131d30432284effffe4e0a713888441ce06b4ca 100644 (file)
@@ -13,13 +13,16 @@ let processContentId;
 
 backgroundMitt.on("ws-message", (message) => 
 {
-    console.log(message)
     if (message.hasOwnProperty("ui"))
     {
-        console.log("INITING UI")
         ui = message.ui;
         ipcEmit("ui-init", ui);
     }
+    else if (message.hasOwnProperty("person"))
+    {
+        ui.person = message.person;
+        ipcEmit("ui-update", message);
+    }
     else
     {
         updateQueue.push(message);
@@ -33,20 +36,20 @@ function handleMessage()
         const message = updateQueue.shift();
         if (message)
         {
-            let index = ui.findIndex(m => m.id === message.id);
+            let index = ui.messages.findIndex(m => m.id === message.id);
 
             if (index >= 0)
             {
-                ui[index] = message;
+                ui.messages[index] = message;
             }
             else
             {
-                ui.push(message)
+                ui.messages.push(message)
             }
 
             if (message.modifier === "ai" && !store.get("focus"))
             {
-                new Notification({title: message.context, body: message.content}).show();
+                new Notification({title: message.context, body: message.content[message.content.length - 1]}).show();
             }
 
             if (message.audio) playback(message.audio, message.id);