import { useMemo } from 'react' import { _web } from '../lib/firestore-types' export const useQuerySnapData = ( querySnap: _web.QuerySnapshot | undefined, transformer?: (data: U, snap: _web.QueryDocumentSnapshot) => V, ): V[] | undefined => useMemo( () => querySnap?.docs.map((snap) => { const data = snap.data({ serverTimestamps: 'estimate' }) return transformer?.(data, snap) ?? ((data as unknown) as V) }), [querySnap], ) export const useDocumentSnapData = ( snap: _web.DocumentSnapshot | undefined, transformer?: (data: U, snap: _web.DocumentSnapshot) => V, ): V | undefined => useMemo(() => { if (!snap) { return undefined } const data = snap.data({ serverTimestamps: 'estimate' }) if (!data) { return undefined } return transformer?.(data, snap) ?? ((data as unknown) as V) }, [snap])