mime-chat/src/modules/messages.ts
Andrew Gundersen feccda8ec9 message grouping
2021-03-13 11:59:37 -06:00

47 lines
No EOL
1.2 KiB
TypeScript

import { ref } from 'vue';
import { RenderMessage, Annotation } from "@/types/message/index";
const messages = ref(new Map());
const messagesKey = "CRIMATA_MESSAGES";
const messagesString = window.localStorage.getItem(messagesKey);
if (messagesString) {
// parse stored messages.
const parsed = JSON.parse(messagesString);
// set messages.
messages.value = new Map(Object.entries(parsed));
}
export default function useMessages() {
// Add new message and update previous message if nessesary.
const addMessage = (m: RenderMessage) => {
console.log(`Adding message: ${m.content.text}`)
messages.value.set(m.uid, m);
}
const updateMessage = (a: Annotation) => {
console.log("Updating message...")
const m = messages.value.get(a.uid)
m.context = a.context
m.text = a.text
return m
}
const saveMessages = () => {
// de-reactivate message data before saving.
const messageData = Object.fromEntries(messages.value);
window.localStorage.setItem(messagesKey, JSON.stringify(messageData));
}
return {
messages,
saveMessages,
addMessage,
updateMessage
}
}