Skip to content

Commit a359de4

Browse files
authored
use RxFire's fromTask (#448)
1 parent 8596428 commit a359de4

File tree

3 files changed

+8
-30
lines changed

3 files changed

+8
-30
lines changed

docs/reference/modules/storage.md

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/storage.tsx

Lines changed: 2 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,11 @@
11
import * as React from 'react';
2-
import { getDownloadURL } from 'rxfire/storage';
3-
import { Observable } from 'rxjs';
2+
import { getDownloadURL, fromTask } from 'rxfire/storage';
43
import { ReactFireOptions, useObservable, ObservableStatus, useStorage } from './';
54
import { useSuspenseEnabledFromConfigAndContext } from './firebaseApp';
65
import { ref } from 'firebase/storage';
76

87
import type { UploadTask, UploadTaskSnapshot, StorageReference, FirebaseStorage } from 'firebase/storage';
98

10-
/**
11-
* modified version of rxFire's _fromTask
12-
*
13-
* @param task
14-
*/
15-
function _fromTask(task: UploadTask) {
16-
return new Observable<UploadTaskSnapshot>((subscriber) => {
17-
const progress = (snap: UploadTaskSnapshot) => {
18-
return subscriber.next(snap);
19-
};
20-
const error = (e: any) => subscriber.error(e);
21-
const complete = () => {
22-
return subscriber.complete();
23-
};
24-
task.on('state_changed', progress, error, complete);
25-
26-
// I REMOVED THE UNSUBSCRIBE RETURN BECAUSE IT CANCELS THE UPLOAD
27-
// https://github.com/firebase/firebase-js-sdk/issues/1659
28-
});
29-
}
30-
319
/**
3210
* Subscribe to the progress of a storage task
3311
*
@@ -37,7 +15,7 @@ function _fromTask(task: UploadTask) {
3715
*/
3816
export function useStorageTask<T = unknown>(task: UploadTask, ref: StorageReference, options?: ReactFireOptions<T>): ObservableStatus<UploadTaskSnapshot | T> {
3917
const observableId = `storage:task:${ref.toString()}`;
40-
const observable$ = _fromTask(task);
18+
const observable$ = fromTask(task);
4119

4220
return useObservable(observableId, observable$, options);
4321
}

test/storage.test.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ describe('Storage', () => {
2626

2727
const uploadTask = uploadBytesResumable(testFileRef, someBytes);
2828

29-
const { result } = renderHook(() => useStorageTask<UploadTaskSnapshot>(uploadTask, testFileRef), { wrapper: Provider });
29+
const { result, waitFor } = renderHook(() => useStorageTask<UploadTaskSnapshot>(uploadTask, testFileRef), { wrapper: Provider });
3030

3131
const uploadTaskSnapshots: Array<UploadTaskSnapshot> = [];
3232
let hasUploadTaskCompleted = false;
@@ -44,8 +44,8 @@ describe('Storage', () => {
4444
}
4545
);
4646

47-
await actOnHooks(async () => {
48-
await uploadTask.then();
47+
await waitFor(() => {
48+
return hasUploadTaskCompleted && result.current.isComplete;
4949
});
5050

5151
expect(result.error).toEqual(uploadTaskError);

0 commit comments

Comments
 (0)