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);
function terminateAudio()
{
globalShortcut.unregisterAll();
- clearInterval(setStreamsId);
- nodeAudio.core.Terminate();
+
+ /* Only terminate PA if initialized */
+ if (setStreamsId)
+ {
+ clearInterval(setStreamsId);
+ nodeAudio.core.Terminate();
+ }
}
function setRecordingStatus(status)
{
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 }}
<span :class="'context ' + modifier + '-context'">
<div
- v-if="avatar != 'False'"
+ v-show="avatar"
class="context-avatar"
:class="{ audio: playback }"
>
const onMouseUp = (e) => {
e.preventDefault();
- console.log("onMouseUp");
window.removeEventListener('mousemove', onMouseMove);
window.removeEventListener('mouseup', onMouseUp);
if (e.key === "Enter" && el.value)
{
window.mainApi.send("message", {
- text: el.value, audio: false });
+ text: el.value, audio: null });
show.value = false;
}
});
Vue.watch(left, calcSide);
- Vue.watch(show, (c, p_) => {
+ Vue.watch(show, (c, _p) => {
if (c) {
el.focus();
} else {
const Input =
{
- setup()
+ props: ["person"],
+
+ setup(props)
{
+ const initials = Vue.ref("");
+
const recording = Vue.ref(false);
const { elementX, elementY } = draggify("input", 15);
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: `
:style="{ top: elementY + 'px', left: elementX + 'px' }"
>
- <div id="input-icon"></div>
+ <div id="input-icon">{{ initials }}</div>
<input
id="input-text" type="text"
</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;
+
setup(props)
{
- Vue.onMounted(() => {
-
- const messengerEl = document.getElementById("messenger");
-
- if (messengerEl) {
- messengerEl.dispatchEvent(new CustomEvent('adjust-scroll'));
- }
-
- });
-
return { calcChild };
},
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)
messages.value = [];
});
- return { messages };
+ return { person, messages };
},
template: `
<Settings />
<WS />
- <Input/>
+ <Input :person="person" />
<div id="messenger">
<Message
window.mainApi.on("ws-status", (val) => {
status.value = val;
- console.log(status.value);
});
});
ipcRenderer.removeAllListeners(channel);
}
}
-);
\ No newline at end of file
+);
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);
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);