UNPKG

react-firehooks

Version:

Lightweight dependency-free collection of React hooks for Firebase

53 lines (52 loc) 1.56 kB
import { aggregateFieldEqual, getDoc, getDocFromCache, getDocFromServer, getDocs, getDocsFromCache, getDocsFromServer, queryEqual, refEqual, } from "firebase/firestore"; /** * @internal */ export async function getDocFromSource(reference, source) { switch (source) { case "cache": return await getDocFromCache(reference); case "server": return await getDocFromServer(reference); case "default": return await getDoc(reference); } } /** * @internal */ export async function getDocsFromSource(query, source) { switch (source) { case "cache": return await getDocsFromCache(query); case "server": return await getDocsFromServer(query); case "default": return await getDocs(query); } } /** * @internal */ export function isDocRefEqual(a, b) { const areBothUndefined = a === undefined && b === undefined; const areSameRef = a !== undefined && b !== undefined && refEqual(a, b); return areBothUndefined || areSameRef; } /** * @internal */ export function isQueryEqual(a, b) { const areBothUndefined = a === undefined && b === undefined; const areSameRef = a !== undefined && b !== undefined && queryEqual(a, b); return areBothUndefined || areSameRef; } /** * @internal */ export function isAggregateSpecEqual(a, b) { if (Object.keys(a).length !== Object.keys(b).length) { return false; } return Object.entries(a).every(([key, value]) => aggregateFieldEqual(value, b[key])); }