Skip to content

Commit 50e29ba

Browse files
committed
[storage] Make sure that all internal methods are wrapped with useCallback
1 parent 0de3633 commit 50e29ba

File tree

1 file changed

+35
-33
lines changed

1 file changed

+35
-33
lines changed

storage/useUploadFile.ts

Lines changed: 35 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import {
66
UploadResult,
77
UploadTaskSnapshot,
88
} from 'firebase/storage';
9-
import { useMemo, useState } from 'react';
9+
import { useCallback, useState } from 'react';
1010

1111
export type UploadFileHook = [
1212
(
@@ -24,37 +24,39 @@ export default (): UploadFileHook => {
2424
const [uploading, setUploading] = useState<boolean>(false);
2525
const [snapshot, setSnapshot] = useState<UploadTaskSnapshot>();
2626

27-
const uploadFile = async (
28-
storageRef: StorageReference,
29-
data: Blob | Uint8Array | ArrayBuffer,
30-
metadata?: UploadMetadata | undefined
31-
): Promise<UploadResult | undefined> => {
32-
return new Promise((resolve, reject) => {
33-
setUploading(true);
34-
setError(undefined);
35-
const uploadTask = uploadBytesResumable(storageRef, data, metadata);
36-
uploadTask.on(
37-
'state_changed',
38-
(snapshot) => {
39-
setSnapshot(snapshot);
40-
},
41-
(error) => {
42-
setUploading(false);
43-
setError(error);
44-
resolve(undefined);
45-
},
46-
() => {
47-
setUploading(false);
48-
setSnapshot(undefined);
49-
resolve({
50-
metadata: uploadTask.snapshot.metadata,
51-
ref: uploadTask.snapshot.ref,
52-
});
53-
}
54-
);
55-
});
56-
};
27+
const uploadFile = useCallback(
28+
async (
29+
storageRef: StorageReference,
30+
data: Blob | Uint8Array | ArrayBuffer,
31+
metadata?: UploadMetadata | undefined
32+
): Promise<UploadResult | undefined> => {
33+
return new Promise((resolve, reject) => {
34+
setUploading(true);
35+
setError(undefined);
36+
const uploadTask = uploadBytesResumable(storageRef, data, metadata);
37+
uploadTask.on(
38+
'state_changed',
39+
(snapshot) => {
40+
setSnapshot(snapshot);
41+
},
42+
(error) => {
43+
setUploading(false);
44+
setError(error);
45+
resolve(undefined);
46+
},
47+
() => {
48+
setUploading(false);
49+
setSnapshot(undefined);
50+
resolve({
51+
metadata: uploadTask.snapshot.metadata,
52+
ref: uploadTask.snapshot.ref,
53+
});
54+
}
55+
);
56+
});
57+
},
58+
[]
59+
);
5760

58-
const resArray: UploadFileHook = [uploadFile, uploading, snapshot, error];
59-
return useMemo<UploadFileHook>(() => resArray, resArray);
61+
return [uploadFile, uploading, snapshot, error];
6062
};

0 commit comments

Comments
 (0)