react-firehooks
Version:
Lightweight dependency-free collection of React hooks for Firebase
20 lines (19 loc) • 1.08 kB
JavaScript
import { getStream } from "firebase/storage";
import { useCallback } from "react";
import { useGet } from "../internal/useGet.js";
import { isStorageRefEqual } from "./internal.js";
/**
* Returns the data of a Google Cloud Storage object as a stream
*
* This hook is only available in Node
* @param reference Reference to a Google Cloud Storage object
* @param maxDownloadSizeBytes If set, the maximum allowed size in bytes to retrieve
* @returns Data, loading state, and error
* - value: Object data as stream; `undefined` if data of the object is currently being downloaded, or an error occurred
* - loading: `true` while downloading the data of the object; `false` if the data was downloaded successfully or an error occurred
* - error: `undefined` if no error occurred
*/
export function useStream(reference, maxDownloadSizeBytes) {
const fetchBlob = useCallback(async (ref) => getStream(ref, maxDownloadSizeBytes), [maxDownloadSizeBytes]);
return useGet(reference !== null && reference !== void 0 ? reference : undefined, fetchBlob, isStorageRefEqual);
}