(name: string)
| 12 | * `useDatabaseV1Store().getDatabaseByName`. |
| 13 | */ |
| 14 | export const useAppDatabase = (name: string): Database => { |
| 15 | const getDatabaseByName = useAppStore((s) => s.getDatabaseByName); |
| 16 | const getOrFetchDatabaseByName = useAppStore( |
| 17 | (s) => s.getOrFetchDatabaseByName |
| 18 | ); |
| 19 | // Subscribe to the specific cache entry so the value recomputes once the |
| 20 | // database resolves. Selecting the raw entry keeps the snapshot stable for |
| 21 | // `useSyncExternalStore`. |
| 22 | const cached = useAppStore((s) => s.databasesByName[name]); |
| 23 | useEffect(() => { |
| 24 | if (isValidDatabaseName(name)) { |
| 25 | void getOrFetchDatabaseByName(name); |
| 26 | } |
| 27 | }, [getOrFetchDatabaseByName, name]); |
| 28 | return useMemo( |
| 29 | () => getDatabaseByName(name), |
| 30 | [getDatabaseByName, name, cached] |
| 31 | ); |
| 32 | }; |
no test coverage detected