Skip to content

Commit 41ebdd0

Browse files
authored
refactor: extract fns from hooks (#241)
1 parent 0380229 commit 41ebdd0

File tree

5 files changed

+37
-52
lines changed

5 files changed

+37
-52
lines changed

src/app-check/useAppCheckToken.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { AppCheck, AppCheckTokenResult, onTokenChanged } from "firebase/app-check";
2-
import { useCallback } from "react";
32
import { ValueHookResult } from "../common/index.js";
43
import { useListen, UseListenOnChange } from "../internal/useListen.js";
54
import { LoadingState } from "../internal/useLoadingValue.js";
65

76
export type UseAppCheckToken = ValueHookResult<AppCheckTokenResult | null, Error>;
87

8+
const onChange: UseListenOnChange<AppCheckTokenResult | null, Error, AppCheck> = (stableAppCheck, next, error) =>
9+
onTokenChanged(stableAppCheck, next, error);
10+
911
/**
1012
* Returns and updates the current App Check token
1113
* @param appCheck Firebase App Check instance
@@ -15,10 +17,5 @@ export type UseAppCheckToken = ValueHookResult<AppCheckTokenResult | null, Error
1517
* error: `undefined` if no error occurred
1618
*/
1719
export function useAppCheckToken(appCheck: AppCheck): UseAppCheckToken {
18-
const onChange: UseListenOnChange<AppCheckTokenResult | null, Error, AppCheck> = useCallback(
19-
(stableAppCheck, next, error) => onTokenChanged(stableAppCheck, next, error),
20-
[],
21-
);
22-
2320
return useListen(appCheck, onChange, () => true, LoadingState);
2421
}

src/auth/useAuthIdToken.ts

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
import { Auth, AuthError, getIdToken, onIdTokenChanged } from "firebase/auth";
2-
import { useCallback } from "react";
32
import { ValueHookResult } from "../common/index.js";
4-
import { useListen, UseListenOnChange } from "../internal/useListen.js";
3+
import { UseListenOnChange, useListen } from "../internal/useListen.js";
54
import { LoadingState } from "../internal/useLoadingValue.js";
65

76
export type UseAuthIdTokenResult = ValueHookResult<string | null, AuthError>;
87

8+
const onChange: UseListenOnChange<string | null, AuthError, Auth> = (stableAuth, next, error) =>
9+
onIdTokenChanged(stableAuth, async (user) => {
10+
if (user) {
11+
try {
12+
// Can also be accessed via `user.accessToken`, but that's not officially documented
13+
const idToken = await getIdToken(user);
14+
next(idToken);
15+
} catch (e) {
16+
error(e as AuthError);
17+
}
18+
} else {
19+
next(null);
20+
}
21+
});
22+
923
/**
1024
* Returns and updates the JWT of the currently authenticated user
1125
* @param auth Firebase Auth instance
@@ -15,23 +29,5 @@ export type UseAuthIdTokenResult = ValueHookResult<string | null, AuthError>;
1529
* error: `undefined` if no error occurred
1630
*/
1731
export function useAuthIdToken(auth: Auth): UseAuthIdTokenResult {
18-
const onChange: UseListenOnChange<string | null, AuthError, Auth> = useCallback(
19-
(stableAuth, next, error) =>
20-
onIdTokenChanged(stableAuth, async (user) => {
21-
if (user) {
22-
try {
23-
// Can also be accessed via `user.accessToken`, but that's not officially documented
24-
const idToken = await getIdToken(user);
25-
next(idToken);
26-
} catch (e) {
27-
error(e as AuthError);
28-
}
29-
} else {
30-
next(null);
31-
}
32-
}),
33-
[],
34-
);
35-
3632
return useListen(auth, onChange, () => true, LoadingState);
3733
}

src/auth/useAuthIdTokenResult.ts

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,25 @@
11
import { Auth, AuthError, getIdTokenResult, IdTokenResult, onIdTokenChanged } from "firebase/auth";
2-
import { useCallback } from "react";
32
import { ValueHookResult } from "../common/index.js";
43
import { useListen, UseListenOnChange } from "../internal/useListen.js";
54
import { LoadingState } from "../internal/useLoadingValue.js";
65

76
export type UseAuthIdTokenResultResult = ValueHookResult<IdTokenResult | null, AuthError>;
87

8+
const onChange: UseListenOnChange<IdTokenResult | null, AuthError, Auth> = (stableAuth, next, error) =>
9+
onIdTokenChanged(stableAuth, async (user) => {
10+
if (user) {
11+
try {
12+
// Can also be accessed via `user.accessToken`, but that's not officially documented
13+
const idTokenResult = await getIdTokenResult(user);
14+
next(idTokenResult);
15+
} catch (e) {
16+
error(e as AuthError);
17+
}
18+
} else {
19+
next(null);
20+
}
21+
});
22+
923
/**
1024
* Returns and updates the deserialized JWT of the currently authenticated user
1125
* @param auth Firebase Auth instance
@@ -15,23 +29,5 @@ export type UseAuthIdTokenResultResult = ValueHookResult<IdTokenResult | null, A
1529
* error: `undefined` if no error occurred
1630
*/
1731
export function useAuthIdTokenResult(auth: Auth): UseAuthIdTokenResultResult {
18-
const onChange: UseListenOnChange<IdTokenResult | null, AuthError, Auth> = useCallback(
19-
(stableAuth, next, error) =>
20-
onIdTokenChanged(stableAuth, async (user) => {
21-
if (user) {
22-
try {
23-
// Can also be accessed via `user.accessToken`, but that's not officially documented
24-
const idTokenResult = await getIdTokenResult(user);
25-
next(idTokenResult);
26-
} catch (e) {
27-
error(e as AuthError);
28-
}
29-
} else {
30-
next(null);
31-
}
32-
}),
33-
[],
34-
);
35-
3632
return useListen(auth, onChange, () => true, LoadingState);
3733
}

src/auth/useAuthState.ts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
import { Auth, AuthError, onAuthStateChanged, User } from "firebase/auth";
2-
import { useCallback } from "react";
32
import { ValueHookResult } from "../common/index.js";
43
import { useListen, UseListenOnChange } from "../internal/useListen.js";
54
import { LoadingState } from "../internal/useLoadingValue.js";
65

76
export type UseAuthStateResult = ValueHookResult<User | null, AuthError>;
87

8+
const onChange: UseListenOnChange<User | null, AuthError, Auth> = (stableAuth, next, error) =>
9+
onAuthStateChanged(stableAuth, next, (e) => error(e as AuthError));
10+
911
/**
1012
* Returns and updates the currently authenticated user
1113
* @param auth Firebase Auth instance
@@ -15,10 +17,5 @@ export type UseAuthStateResult = ValueHookResult<User | null, AuthError>;
1517
* error: `undefined` if no error occurred
1618
*/
1719
export function useAuthState(auth: Auth): UseAuthStateResult {
18-
const onChange: UseListenOnChange<User | null, AuthError, Auth> = useCallback(
19-
(stableAuth, next, error) => onAuthStateChanged(stableAuth, next, (e) => error(e as AuthError)),
20-
[],
21-
);
22-
2320
return useListen(auth, onChange, () => true, auth.currentUser ? auth.currentUser : LoadingState);
2421
}

src/firestore/useQueriesData.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ export function useQueriesData<Values extends ReadonlyArray<DocumentData> = Read
4444
error,
4545
},
4646
),
47-
4847
[includeMetadataChanges, serverTimestamps],
4948
);
5049

0 commit comments

Comments
 (0)