Skip to content

Commit faad677

Browse files
committed
Recreate PR #75 against latest version of code
1 parent 2177d64 commit faad677

File tree

4 files changed

+61
-69
lines changed

4 files changed

+61
-69
lines changed

firestore/useCollection.ts

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { useEffect, useMemo } from 'react';
33
import { snapshotToData } from './helpers';
44
import { LoadingHook, useIsEqualRef, useLoadingValue } from '../util';
55

6-
export type CollectionHook = LoadingHook<
7-
firebase.firestore.QuerySnapshot,
6+
export type CollectionHook<T> = LoadingHook<
7+
firebase.firestore.QuerySnapshot<T>,
88
Error
99
>;
1010
export type CollectionDataHook<T> = LoadingHook<T[], Error>;
1111

12-
export const useCollection = (
12+
export const useCollection = <T>(
1313
query?: firebase.firestore.Query | null,
1414
options?: {
1515
snapshotListenOptions?: firebase.firestore.SnapshotListenOptions;
1616
}
17-
): CollectionHook => {
17+
): CollectionHook<T> => {
1818
const { error, loading, reset, setError, setValue, value } = useLoadingValue<
1919
firebase.firestore.QuerySnapshot,
2020
Error
@@ -40,11 +40,12 @@ export const useCollection = (
4040
};
4141
}, [ref.current]);
4242

43-
const resArray: CollectionHook = [value, loading, error];
44-
return useMemo(
45-
() => resArray,
46-
resArray,
47-
);
43+
const resArray: CollectionHook<T> = [
44+
value as firebase.firestore.QuerySnapshot<T>,
45+
loading,
46+
error,
47+
];
48+
return useMemo(() => resArray, resArray);
4849
};
4950

5051
export const useCollectionData = <T>(
@@ -58,19 +59,17 @@ export const useCollectionData = <T>(
5859
const snapshotListenOptions = options
5960
? options.snapshotListenOptions
6061
: undefined;
61-
const [snapshots, loading, error] = useCollection(query, {
62+
const [snapshots, loading, error] = useCollection<T>(query, {
6263
snapshotListenOptions,
6364
});
6465
const values = useMemo(
65-
() => (snapshots
66-
? snapshots.docs.map(doc => snapshotToData(doc, idField))
67-
: undefined) as T[],
66+
() =>
67+
(snapshots
68+
? snapshots.docs.map((doc) => snapshotToData(doc, idField))
69+
: undefined) as T[],
6870
[snapshots, idField]
6971
);
7072

71-
const resArray: CollectionDataHook<T> = [values, loading, error]
72-
return useMemo(
73-
() => resArray,
74-
resArray,
75-
);
73+
const resArray: CollectionDataHook<T> = [values, loading, error];
74+
return useMemo(() => resArray, resArray);
7675
};

firestore/useCollectionOnce.ts

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { useEffect, useMemo } from 'react';
33
import { snapshotToData } from './helpers';
44
import { LoadingHook, useIsEqualRef, useLoadingValue } from '../util';
55

6-
export type CollectionOnceHook = LoadingHook<
7-
firebase.firestore.QuerySnapshot,
6+
export type CollectionOnceHook<T> = LoadingHook<
7+
firebase.firestore.QuerySnapshot<T>,
88
Error
99
>;
1010
export type CollectionDataOnceHook<T> = LoadingHook<T[], Error>;
1111

12-
export const useCollectionOnce = (
12+
export const useCollectionOnce = <T>(
1313
query?: firebase.firestore.Query | null,
1414
options?: {
1515
getOptions?: firebase.firestore.GetOptions;
1616
}
17-
): CollectionOnceHook => {
17+
): CollectionOnceHook<T> => {
1818
const { error, loading, reset, setError, setValue, value } = useLoadingValue<
1919
firebase.firestore.QuerySnapshot,
2020
Error
@@ -32,11 +32,12 @@ export const useCollectionOnce = (
3232
.catch(setError);
3333
}, [ref.current]);
3434

35-
const resArray: CollectionOnceHook = [value, loading, error];
36-
return useMemo(
37-
() => resArray,
38-
resArray,
39-
);
35+
const resArray: CollectionOnceHook<T> = [
36+
value as firebase.firestore.QuerySnapshot<T>,
37+
loading,
38+
error,
39+
];
40+
return useMemo(() => resArray, resArray);
4041
};
4142

4243
export const useCollectionDataOnce = <T>(
@@ -48,20 +49,16 @@ export const useCollectionDataOnce = <T>(
4849
): CollectionDataOnceHook<T> => {
4950
const idField = options ? options.idField : undefined;
5051
const getOptions = options ? options.getOptions : undefined;
51-
const [snapshots, loading, error] = useCollectionOnce(query, { getOptions });
52+
const [snapshots, loading, error] = useCollectionOnce<T>(query, {
53+
getOptions,
54+
});
5255
const values = useMemo(
53-
() => (snapshots
54-
? snapshots.docs.map(doc => snapshotToData(doc, idField))
55-
: undefined) as T[],
56+
() =>
57+
(snapshots
58+
? snapshots.docs.map((doc) => snapshotToData(doc, idField))
59+
: undefined) as T[],
5660
[snapshots, idField]
5761
);
58-
const resArray: CollectionDataOnceHook<T> = [
59-
values,
60-
loading,
61-
error,
62-
];
63-
return useMemo(
64-
() => resArray,
65-
resArray,
66-
);
62+
const resArray: CollectionDataOnceHook<T> = [values, loading, error];
63+
return useMemo(() => resArray, resArray);
6764
};

firestore/useDocument.ts

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { useEffect, useMemo } from 'react';
33
import { snapshotToData } from './helpers';
44
import { LoadingHook, useIsEqualRef, useLoadingValue } from '../util';
55

6-
export type DocumentHook = LoadingHook<
7-
firebase.firestore.DocumentSnapshot,
6+
export type DocumentHook<T> = LoadingHook<
7+
firebase.firestore.DocumentSnapshot<T>,
88
Error
99
>;
1010
export type DocumentDataHook<T> = LoadingHook<T, Error>;
1111

12-
export const useDocument = (
12+
export const useDocument = <T>(
1313
docRef?: firebase.firestore.DocumentReference | null,
1414
options?: {
1515
snapshotListenOptions?: firebase.firestore.SnapshotListenOptions;
1616
}
17-
): DocumentHook => {
17+
): DocumentHook<T> => {
1818
const { error, loading, reset, setError, setValue, value } = useLoadingValue<
1919
firebase.firestore.DocumentSnapshot,
2020
Error
@@ -40,11 +40,12 @@ export const useDocument = (
4040
};
4141
}, [ref.current]);
4242

43-
const resArray: DocumentHook = [value, loading, error];
44-
return useMemo(
45-
() => resArray,
46-
resArray,
47-
);
43+
const resArray: DocumentHook<T> = [
44+
value as firebase.firestore.DocumentSnapshot<T>,
45+
loading,
46+
error,
47+
];
48+
return useMemo(() => resArray, resArray);
4849
};
4950

5051
export const useDocumentData = <T>(
@@ -58,7 +59,7 @@ export const useDocumentData = <T>(
5859
const snapshotListenOptions = options
5960
? options.snapshotListenOptions
6061
: undefined;
61-
const [snapshot, loading, error] = useDocument(docRef, {
62+
const [snapshot, loading, error] = useDocument<T>(docRef, {
6263
snapshotListenOptions,
6364
});
6465
const value = useMemo(
@@ -67,8 +68,5 @@ export const useDocumentData = <T>(
6768
);
6869

6970
const resArray: DocumentDataHook<T> = [value, loading, error];
70-
return useMemo(
71-
() => resArray,
72-
resArray,
73-
);
71+
return useMemo(() => resArray, resArray);
7472
};

firestore/useDocumentOnce.ts

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,18 @@ import { useEffect, useMemo } from 'react';
33
import { snapshotToData } from './helpers';
44
import { LoadingHook, useIsEqualRef, useLoadingValue } from '../util';
55

6-
export type DocumentOnceHook = LoadingHook<
7-
firebase.firestore.DocumentSnapshot,
6+
export type DocumentOnceHook<T> = LoadingHook<
7+
firebase.firestore.DocumentSnapshot<T>,
88
Error
99
>;
1010
export type DocumentDataOnceHook<T> = LoadingHook<T, Error>;
1111

12-
export const useDocumentOnce = (
12+
export const useDocumentOnce = <T>(
1313
docRef?: firebase.firestore.DocumentReference | null,
1414
options?: {
1515
getOptions?: firebase.firestore.GetOptions;
1616
}
17-
): DocumentOnceHook => {
17+
): DocumentOnceHook<T> => {
1818
const { error, loading, reset, setError, setValue, value } = useLoadingValue<
1919
firebase.firestore.DocumentSnapshot,
2020
Error
@@ -32,11 +32,12 @@ export const useDocumentOnce = (
3232
.catch(setError);
3333
}, [ref.current]);
3434

35-
const resArray: DocumentOnceHook = [value, loading, error]
36-
return useMemo(
37-
() => resArray,
38-
resArray,
39-
);
35+
const resArray: DocumentOnceHook<T> = [
36+
value as firebase.firestore.DocumentSnapshot<T>,
37+
loading,
38+
error,
39+
];
40+
return useMemo(() => resArray, resArray);
4041
};
4142

4243
export const useDocumentDataOnce = <T>(
@@ -48,15 +49,12 @@ export const useDocumentDataOnce = <T>(
4849
): DocumentDataOnceHook<T> => {
4950
const idField = options ? options.idField : undefined;
5051
const getOptions = options ? options.getOptions : undefined;
51-
const [snapshot, loading, error] = useDocumentOnce(docRef, { getOptions });
52+
const [snapshot, loading, error] = useDocumentOnce<T>(docRef, { getOptions });
5253
const value = useMemo(
5354
() => (snapshot ? snapshotToData(snapshot, idField) : undefined) as T,
5455
[snapshot, idField]
5556
);
5657

57-
const resArray: DocumentDataOnceHook<T> = [value, loading, error]
58-
return useMemo(
59-
() => resArray,
60-
resArray,
61-
);
58+
const resArray: DocumentDataOnceHook<T> = [value, loading, error];
59+
return useMemo(() => resArray, resArray);
6260
};

0 commit comments

Comments
 (0)