import { db } from '../firebase.js'; import { collection, doc, onSnapshot, query, orderBy, addDoc, updateDoc, deleteDoc, serverTimestamp } from 'firebase/firestore'; import { writable } from 'svelte/store'; let entries = $state([]); let _uid = null; let _unsubscribe = null; export const journals = writable([]); export function getEntries() { return entries; } export function initEntriesListener(uid) { if (_unsubscribe) _unsubscribe(); _uid = uid; const q = query( collection(db, 'users', uid, 'entries'), orderBy('createdAt', 'desc') ); _unsubscribe = onSnapshot(q, (snap) => { const data = snap.docs.map((d) => ({ id: d.id, ...d.data() })); entries = data; journals.set(data); }); } export async function addEntry(data) { if (!_uid) throw new Error('Not logged in'); const ref = await addDoc(collection(db, 'users', _uid, 'entries'), { ...data, createdAt: serverTimestamp(), updatedAt: serverTimestamp(), }); return ref.id; } export async function updateEntry(id, data) { if (!_uid) return; await updateDoc(doc(db, 'users', _uid, 'entries', id), { ...data, updatedAt: serverTimestamp(), }); } export async function removeEntry(id) { if (!_uid) return; await deleteDoc(doc(db, 'users', _uid, 'entries', id)); }