import { useCallback, useContext } from "react"; import { DrizzleIndexedDBContext, useIndexedDBCollection, type DrizzleIndexedDBContextValue, } from "./DrizzleIndexedDBProvider"; import type { IDBDatabaseLike } from "../idb-types"; export type UseDrizzleIndexedDBContextReturn< TSchema extends Record, > = { useCollection: ( tableName: TTableName, ) => ReturnType>; indexedDB: IDBDatabaseLike | null; }; export function useDrizzleIndexedDB< TSchema extends Record, >(): UseDrizzleIndexedDBContextReturn { const context = useContext( DrizzleIndexedDBContext, ) as DrizzleIndexedDBContextValue | null; if (!context) { throw new Error( "useDrizzleIndexedDBContext must be used within a DrizzleIndexedDBProvider", ); } const useCollection = useCallback( (tableName: TTableName) => // biome-ignore lint/correctness/useHookAtTopLevel: This is on purpose. useIndexedDBCollection(context, tableName), [context], ); return { useCollection, indexedDB: context.indexedDB, }; }