import localforage from 'localforage'; import { writable } from 'svelte/store'; import { MessageType, Sender, type ChatData, type Message } from './types'; import { nanoid } from 'nanoid'; import { initImage } from './initImage'; const intitalChatId = nanoid(); const initMessage: Message = { id: nanoid(), content: initImage, sender: Sender.USER, type: MessageType.IMAGE, timestamp: new Date().getTime() } const initialData: ChatData = [{ id: intitalChatId, messages: [initMessage], blurb: `New Chat - ${intitalChatId}`, timestamp: new Date().getTime() }]; const lastBase64Image = writable(initMessage.content); const loadingState = writable(''); const chatsStore = writable(initialData); const selectedChatId = writable(intitalChatId); localforage.config({ name: 'Pix2PixChat', storeName: 'chatsStore' }); localforage.getItem('chatsStore').then((value) => { if (value) { chatsStore.set(value); } else { chatsStore.set(initialData); } }); chatsStore.subscribe((value) => { localforage.setItem('chatsStore', value) return value; }); localforage.getItem('selectedChatId').then((value) => { if (value) { selectedChatId.set(value); } else { selectedChatId.set(intitalChatId); } }); selectedChatId.subscribe((value) => { localforage.setItem('selectedChatId', value) return value; }); export { loadingState, chatsStore, selectedChatId, lastBase64Image };