forked from clerk/javascript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuseUser.ts
More file actions
39 lines (33 loc) · 1.02 KB
/
Copy pathuseUser.ts
File metadata and controls
39 lines (33 loc) · 1.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import type { UseUserReturn } from '@clerk/types';
import { useAssertWrappedByClerkProvider, useUserContext } from '../contexts';
/**
* Returns the current auth state and if a user is signed in, the user object.
*
* Until Clerk loads and initializes, `isLoaded` will be set to `false`.
* Once Clerk loads, `isLoaded` will be set to `true`, and you can
* safely access `isSignedIn` state and `user`.
*
* @example
* A simple example:
*
* import { useUser } from '@clerk/clerk-react'
*
* function Hello() {
* const { isSignedIn, user } = useUser();
* if(!isSignedIn) {
* return null;
* }
* return <div>Hello, {user.firstName}</div>
* }
*/
export function useUser(): UseUserReturn {
useAssertWrappedByClerkProvider('useUser');
const user = useUserContext();
if (user === undefined) {
return { isLoaded: false, isSignedIn: undefined, user: undefined };
}
if (user === null) {
return { isLoaded: true, isSignedIn: false, user: null };
}
return { isLoaded: true, isSignedIn: true, user };
}