UNPKG

svelte-firebase-state

Version:

Simplify Firebase integration in Svelte and SvelteKit with reactive state management for Firestore and Realtime Database.

36 lines (35 loc) 918 B
import { onAuthStateChanged } from "firebase/auth"; import { untrack } from "svelte"; // eslint-disable-next-line @typescript-eslint/no-explicit-any export function effect_deps(fn, fnDeps) { $effect(() => { fnDeps(); return untrack(() => fn()); }); } export async function get_firebase_user(auth) { if (!auth) { return null; } return new Promise((resolve, reject) => { const unsubscribe = onAuthStateChanged(auth, (user) => { // Stop listening after first response unsubscribe?.(); if (user) { resolve(user); } else { resolve(null); } }, reject); }); } export const genericIdConverter = () => ({ toFirestore: (data) => data, fromFirestore: (snap) => { return { id: snap.id, ...snap.data() }; } });