Skip to content

Commit

Permalink
feat: require firebase 9.5.0 or later
Browse files Browse the repository at this point in the history
BREAKING CHANGE: require firebase 9.5.0 or later
  • Loading branch information
andipaetzold committed Dec 29, 2021
1 parent 5890a01 commit 8bb9ba1
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 41 deletions.
10 changes: 4 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ yarn add react-firehooks

## Compatibility

- [firebase](https://www.npmjs.com/package/firebase): 9.0.0 or greater
- [react](https://www.npmjs.com/package/react): 16.8.0 or greater
- [firebase](https://www.npmjs.com/package/firebase): 9.5.0 or later
- [react](https://www.npmjs.com/package/react): 16.8.0 or later

If you are using Firebase 8 or earlier, please use [`react-firebase-hooks`](https://www.npmjs.com/package/react-firebase-hooks).

Expand Down Expand Up @@ -364,7 +364,7 @@ import { ... } from 'react-firehooks/storage';

Returns the data of a Google Cloud Storage object as a Blob

Requires firebase v9.5.0 or later. This hook is not available in Node.
This hook is not available in Node.

```javascript
const [data, loading, error] = useNode(storageReference);
Expand All @@ -385,8 +385,6 @@ Returns:

Returns the data of a Google Cloud Storage object

Requires firebase v9.5.0 or later

```javascript
const [data, loading, error] = useBytes(storageReference);
```
Expand Down Expand Up @@ -442,7 +440,7 @@ Returns:

Returns the data of a Google Cloud Storage object as a stream

Requires firebase v9.5.0 or later. This hook is only available in Node.
This hook is only available in Node.

```javascript
const [data, loading, error] = useNode(storageReference);
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@
"lint-staged": "lint-staged"
},
"peerDependencies": {
"firebase": "^9.0.0",
"firebase": "^9.5.0",
"react": ">=16.8.0"
},
"lint-staged": {
Expand Down
14 changes: 3 additions & 11 deletions src/storage/useBlob.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { StorageError, StorageReference } from "firebase/storage";
import { getBlob, StorageError, StorageReference } from "firebase/storage";
import { useCallback } from "react";
import { ValueHookResult } from "../common";
import { useOnce } from "../internal/useOnce";
Expand All @@ -9,7 +9,7 @@ export type UseBlobResult = ValueHookResult<Blob, StorageError>;
/**
* Returns the data of a Google Cloud Storage object as a Blob
*
* Requires firebase v9.5.0 or later. This hook is not available in Node.
* This hook is not available in Node
*
* @param {StorageReference | undefined | null} reference Reference to a Google Cloud Storage object
* @param {?number} maxDownloadSizeBytes If set, the maximum allowed size in bytes to retrieve
Expand All @@ -20,15 +20,7 @@ export type UseBlobResult = ValueHookResult<Blob, StorageError>;
*/
export function useBlob(reference: StorageReference | undefined | null, maxDownloadSizeBytes?: number): UseBlobResult {
const fetchBlob = useCallback(
async (ref: StorageReference) => {
// TODO: change to regular import in react-firehooks v2
const firebaseStorage = await require("firebase/storage");
if ("getBlob" in firebaseStorage) {
return await firebaseStorage.getBlob(ref, maxDownloadSizeBytes);
} else {
throw new Error("`getBlob` requires firebase v9.5.0 or later");
}
},
async (ref: StorageReference) => getBlob(ref, maxDownloadSizeBytes),
[maxDownloadSizeBytes]
);

Expand Down
14 changes: 2 additions & 12 deletions src/storage/useBytes.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { StorageError, StorageReference } from "firebase/storage";
import { getBytes, StorageError, StorageReference } from "firebase/storage";
import { useCallback } from "react";
import { ValueHookResult } from "../common";
import { useOnce } from "../internal/useOnce";
Expand All @@ -9,8 +9,6 @@ export type UseBytesResult = ValueHookResult<ArrayBuffer, StorageError>;
/**
* Returns the data of a Google Cloud Storage object
*
* Requires firebase v9.5.0 or later
*
* @param {StorageReference | undefined | null} reference Reference to a Google Cloud Storage object
* @param {?number} maxDownloadSizeBytes If set, the maximum allowed size in bytes to retrieve
* @returns {UseBytesResult} Data, loading state, and error
Expand All @@ -20,15 +18,7 @@ export type UseBytesResult = ValueHookResult<ArrayBuffer, StorageError>;
*/
export function useBytes(reference: StorageReference | undefined | null, maxDownloadSizeBytes?: number): UseBytesResult {
const fetchBytes = useCallback(
async (ref: StorageReference) => {
// TODO: change to regular import in react-firehooks v2
const firebaseStorage = await require("firebase/storage");
if ("getBytes" in firebaseStorage) {
return await firebaseStorage.getBytes(ref, maxDownloadSizeBytes);
} else {
throw new Error("`useBytes` requires firebase v9.5.0 or later");
}
},
async (ref: StorageReference) => getBytes(ref, maxDownloadSizeBytes),
[maxDownloadSizeBytes]
);

Expand Down
14 changes: 3 additions & 11 deletions src/storage/useStream.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { StorageError, StorageReference } from "firebase/storage";
import { getStream, StorageError, StorageReference } from "firebase/storage";
import { useCallback } from "react";
import { ValueHookResult } from "../common";
import { useOnce } from "../internal/useOnce";
Expand All @@ -9,7 +9,7 @@ export type UseStreamResult = ValueHookResult<NodeJS.ReadableStream, StorageErro
/**
* Returns the data of a Google Cloud Storage object as a stream
*
* Requires firebase v9.5.0 or later. This hook is only available in Node.
* This hook is only available in Node
*
* @param {StorageReference | undefined | null} reference Reference to a Google Cloud Storage object
* @param {?number} maxDownloadSizeBytes If set, the maximum allowed size in bytes to retrieve
Expand All @@ -20,15 +20,7 @@ export type UseStreamResult = ValueHookResult<NodeJS.ReadableStream, StorageErro
*/
export function useStream(reference: StorageReference | undefined | null, maxDownloadSizeBytes?: number): UseStreamResult {
const fetchBlob = useCallback(
async (ref: StorageReference) => {
// TODO: change to regular import in react-firehooks v2
const firebaseStorage = await require("firebase/storage");
if ("getStream" in firebaseStorage) {
return await firebaseStorage.getStream(ref, maxDownloadSizeBytes);
} else {
throw new Error("`getStream` requires firebase v9.5.0 or later");
}
},
async (ref: StorageReference) => getStream(ref, maxDownloadSizeBytes),
[maxDownloadSizeBytes]
);

Expand Down

0 comments on commit 8bb9ba1

Please sign in to comment.