Skip to content

Commit 290faeb

Browse files
authored
update firestore generics (#366)
* update firestore generics * doc regen
1 parent d8f2e4a commit 290faeb

File tree

3 files changed

+14
-14
lines changed

3 files changed

+14
-14
lines changed

docs/reference/modules/firestore.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,15 +36,15 @@ ___
3636

3737
### useFirestoreCollection
3838

39-
**useFirestoreCollection**<T\>(`query`: firebase.firestore.Query, `options?`: [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T[]\>): [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<T *extends* {} ? T[] : firebase.firestore.QuerySnapshot\>
39+
**useFirestoreCollection**<T\>(`query`: firebase.firestore.Query, `options?`: [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T[]\>): [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<firebase.firestore.QuerySnapshot<T\>\>
4040

4141
Subscribe to a Firestore collection
4242

4343
#### Type parameters:
4444

4545
| Name | Default |
4646
| :------ | :------ |
47-
| `T` | { [key: string]: *unknown*; } |
47+
| `T` | DocumentData |
4848

4949
#### Parameters:
5050

@@ -53,7 +53,7 @@ Subscribe to a Firestore collection
5353
| `query` | firebase.firestore.Query |
5454
| `options?` | [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T[]\> |
5555

56-
**Returns:** [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<T *extends* {} ? T[] : firebase.firestore.QuerySnapshot\>
56+
**Returns:** [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<firebase.firestore.QuerySnapshot<T\>\>
5757

5858
Defined in: [src/firestore.tsx:108](https://github.com/FirebaseExtended/reactfire/blob/main/src/firestore.tsx#L108)
5959

@@ -86,15 +86,15 @@ ___
8686

8787
### useFirestoreDoc
8888

89-
**useFirestoreDoc**<T\>(`ref`: firebase.firestore.DocumentReference, `options?`: [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T\>): [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<T *extends* {} ? T : firebase.firestore.DocumentSnapshot\>
89+
**useFirestoreDoc**<T\>(`ref`: firebase.firestore.DocumentReference, `options?`: [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T\>): [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<firebase.firestore.DocumentSnapshot<T\>\>
9090

9191
Suscribe to Firestore Document changes
9292

9393
#### Type parameters:
9494

9595
| Name | Default |
9696
| :------ | :------ |
97-
| `T` | *unknown* |
97+
| `T` | DocumentData |
9898

9999
#### Parameters:
100100

@@ -103,7 +103,7 @@ Suscribe to Firestore Document changes
103103
| `ref` | firebase.firestore.DocumentReference | Reference to the document you want to listen to |
104104
| `options?` | [*ReactFireOptions*](../interfaces/index.reactfireoptions.md)<T\> | |
105105

106-
**Returns:** [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<T *extends* {} ? T : firebase.firestore.DocumentSnapshot\>
106+
**Returns:** [*ObservableStatus*](../interfaces/useobservable.observablestatus.md)<firebase.firestore.DocumentSnapshot<T\>\>
107107

108108
Defined in: [src/firestore.tsx:46](https://github.com/FirebaseExtended/reactfire/blob/main/src/firestore.tsx#L46)
109109

src/firestore.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ export function preloadFirestoreDoc(
4343
* @param ref - Reference to the document you want to listen to
4444
* @param options
4545
*/
46-
export function useFirestoreDoc<T = unknown>(
46+
export function useFirestoreDoc<T = firebase.firestore.DocumentData>(
4747
ref: firebase.firestore.DocumentReference,
4848
options?: ReactFireOptions<T>
49-
): ObservableStatus<T extends {} ? T : firebase.firestore.DocumentSnapshot> {
49+
): ObservableStatus<firebase.firestore.DocumentSnapshot<T>> {
5050
const observableId = `firestore:doc:${ref.firestore.app.name}:${ref.path}`;
5151
const observable$ = doc(ref);
5252

@@ -105,10 +105,10 @@ export function useFirestoreDocDataOnce<T = unknown>(ref: firebase.firestore.Doc
105105
* @param ref - Reference to the collection you want to listen to
106106
* @param options
107107
*/
108-
export function useFirestoreCollection<T = { [key: string]: unknown }>(
108+
export function useFirestoreCollection<T = firebase.firestore.DocumentData>(
109109
query: firebase.firestore.Query,
110110
options?: ReactFireOptions<T[]>
111-
): ObservableStatus<T extends {} ? T[] : firebase.firestore.QuerySnapshot> {
111+
): ObservableStatus<firebase.firestore.QuerySnapshot<T>> {
112112
const observableId = `firestore:collection:${getUniqueIdForFirestoreQuery(query)}`;
113113
const observable$ = fromCollectionRef(query);
114114

test/firestore.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ describe('Firestore', () => {
6464

6565
await waitFor(() => result.current.status === 'success');
6666

67-
const doc: firebase.firestore.DocumentSnapshot = (result.current.data as unknown) as firebase.firestore.DocumentSnapshot;
67+
const doc = result.current.data;
6868

6969
expect(doc).toBeDefined();
7070
const data = doc.data();
@@ -171,7 +171,7 @@ describe('Firestore', () => {
171171

172172
await waitFor(() => result.current.status === 'success');
173173

174-
const collectionSnap = (result.current.data as unknown) as firebase.firestore.QuerySnapshot;
174+
const collectionSnap = result.current.data;
175175
expect(collectionSnap.docs.length).toEqual(2);
176176
});
177177

@@ -191,8 +191,8 @@ describe('Firestore', () => {
191191
await waitForUnfiltered(() => unfilteredResult.current.status === 'success');
192192
await waitForFiltered(() => filteredResult.current.status === 'success');
193193

194-
const filteredSnap = (filteredResult.current.data as unknown) as firebase.firestore.QuerySnapshot;
195-
const unfilteredSnap = (unfilteredResult.current.data as unknown) as firebase.firestore.QuerySnapshot;
194+
const filteredSnap = filteredResult.current.data;
195+
const unfilteredSnap = unfilteredResult.current.data;
196196

197197
// filteredList's length should be 1 since we only added one value that matches its query
198198
expect(filteredSnap.docs.length).toEqual(1);

0 commit comments

Comments
 (0)