export let messages: Message[] = [];
export const setMessages = (init: {messages: Message[]}) => {
+ console.log("setMessages", init);
messages = init.messages;
ipcEmit("init-messages", messages);
}
export const newMessage = (message: Message) => {
+ console.log("newMessage", message);
messages.push(message);
ipcEmit("add-message", message);
}
export const annotateMessage = (annotation: Annotation) => {
+ console.log("annotateMessage", annotation);
+
for (let i in messages) {
+
if (messages[i].uid == annotation.uid) {
- messages[i].context = annotation.context;
- ipcEmit("update-message", annotation)
+
+ if (annotation.data.hasOwnProperty("content")) {
+ const data = annotation.data as ContentData;
+ messages[i].content = data.content;
+ }
+
+ if (annotation.data.hasOwnProperty("context")) {
+ const data = annotation.data as ContextData;
+ messages[i].context = data.context;
+ }
+
+ ipcEmit("update-message", annotation);
break;
+
}
}
}
+++ /dev/null
-import { ref } from 'vue';
-import useScroll from "@/render/composables/useScroll";
-
-const messagesRef = ref();
-
-/* seed the canvas with messages */
-const seedCanvas = (messages: Message[]) => {
- messagesRef.value = messages;
-}
-
-const addMessage = (message: Message) => {
- messagesRef.value.push(message);
-}
-
-const updateMessage = (message: Message) => {
-
- let target_message = messagesRef.value.filter((m: Message) => {
- return m.uid = message.uid;
- })[0];
-
- if (target_message) {
- target_message = message;
- }
-
-}
-
-export default function useMessages() {
-
- const { updateScrollRef, adjustScroll } = useScroll("messenger");
-
- return {
- messagesRef,
- seedCanvas,
- addMessage,
- updateMessage
- };
-
-}
}
private _onPost = (_e: IpcRendererEvent, payload: InputParam): void => {
- console.log(`[IPC] Post: ${this.channel}`);
+ console.log(`[IPC] Post: ${this.channel}`, payload);
this._listenerCallback(payload);
}
channel: UPDATE_MESSAGE_CHANNEL,
listenerCallback: setConnectionStatus
});
-
export const messages: Ref<Array<Message>> = ref([]);
export const setMessages: IpcListenerCallback<Array<Message>> = (payload) => {
- // messages.value = payload as Array<Message>;
+ console.log("setMessages", payload);
+ messages.value = payload as Array<Message>;
}
export const addMessage: IpcListenerCallback<Message> = (payload) => {
+ console.log("addMessage", payload);
messages.value.push(payload as Message);
}
export const updateMessage: IpcListenerCallback<Annotation> = (payload) => {
+ console.log("updateMessage", payload);
const annotation = payload as Annotation;
+ /* find the target message */
let targetMessage = messages.value.filter((m: Message) => {
return m.uid === annotation.uid;
})[0];
if (targetMessage) {
- targetMessage.content = annotation.content;
- targetMessage.context = annotation.context;
+
+ /* update the content (add a new bubble) */
+ if (annotation.data.hasOwnProperty("content")) {
+ const data = annotation.data as ContentData;
+ targetMessage.content = data.content;
+ }
+
+ /* and/or update the context */
+ if (annotation.data.hasOwnProperty("context")) {
+ const data = annotation.data as ContextData;
+ targetMessage.context = data.context;
+ }
+
}
+
}
-messages.value = [
-{
- content: ["Welcome Andrew"],
- context: "Crimata",
- modifier: "ai",
- uid: "b5dd3d1b-cef0-4057-aa0f-c72e5c4cd67d"
-},
-{
- content: ["show contacts"],
- context: "show contacts",
- modifier: "client",
- uid: "ee2819a3-1125-4881-9942-ca5b3d0ad502"
-}]
+// messages.value = [
+// {
+// content: ["Welcome Andrew"],
+// context: "Crimata",
+// modifier: "ai",
+// uid: "b5dd3d1b-cef0-4057-aa0f-c72e5c4cd67d"
+// },
+// {
+// content: ["show contacts"],
+// context: "false",
+// modifier: "client",
+// uid: "ee2819a3-1125-4881-9942-ca5b3d0ad502"
+// }]
// setTimeout(() => {
// }, 2000);
-
-export default {
- messages,
- setMessages,
- addMessage,
- updateMessage
-};
};
const isAnnotation = (object: any): object is Annotation => {
- return 'messages' in object;
+ return 'uid' in object;
};
const deauthenticate = (): void => {
uid: string;
}
-interface Annotation {
+interface ContentData {
content: string[];
+}
+
+interface ContextData {
context: string;
+}
+
+interface Annotation {
+ data: ContentData | ContextData;
uid: string;
}