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
JavaScript
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()
};
}
});