@better-auth-ui/react 1.6.8 → 1.6.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/auth-context.d.ts +3 -0
- package/dist/components/auth/auth-context.js +4 -0
- package/dist/components/auth/auth-provider.d.ts +4 -4
- package/dist/components/auth/auth-provider.js +65 -41
- package/dist/components/auth/email/email-changed.d.ts +2 -2
- package/dist/components/auth/email/email-changed.js +68 -154
- package/dist/components/auth/email/email-localization.d.ts +11 -3
- package/dist/components/auth/email/email-localization.js +25 -18
- package/dist/components/auth/email/email-styles.js +77 -52
- package/dist/components/auth/email/email-verification.d.ts +2 -2
- package/dist/components/auth/email/email-verification.js +73 -138
- package/dist/components/auth/email/index.d.ts +10 -9
- package/dist/components/auth/email/index.js +10 -9
- package/dist/components/auth/email/magic-link.d.ts +2 -2
- package/dist/components/auth/email/magic-link.js +70 -139
- package/dist/components/auth/email/new-device.d.ts +2 -2
- package/dist/components/auth/email/new-device.js +88 -221
- package/dist/components/auth/email/organization-invitation.d.ts +121 -0
- package/dist/components/auth/email/organization-invitation.js +110 -0
- package/dist/components/auth/email/otp-email.d.ts +2 -2
- package/dist/components/auth/email/otp-email.js +63 -127
- package/dist/components/auth/email/password-changed.d.ts +2 -2
- package/dist/components/auth/email/password-changed.js +74 -157
- package/dist/components/auth/email/reset-password.d.ts +2 -2
- package/dist/components/auth/email/reset-password.js +66 -138
- package/dist/components/auth/fetch-options-provider.d.ts +1 -1
- package/dist/components/auth/fetch-options-provider.js +28 -27
- package/dist/components/icons/apple.d.ts +1 -1
- package/dist/components/icons/apple.js +9 -16
- package/dist/components/icons/atlassian.d.ts +1 -1
- package/dist/components/icons/atlassian.js +13 -38
- package/dist/components/icons/cognito.d.ts +1 -1
- package/dist/components/icons/cognito.js +9 -19
- package/dist/components/icons/discord.d.ts +1 -1
- package/dist/components/icons/discord.js +9 -16
- package/dist/components/icons/dropbox.d.ts +1 -1
- package/dist/components/icons/dropbox.js +9 -16
- package/dist/components/icons/facebook.d.ts +1 -1
- package/dist/components/icons/facebook.js +11 -19
- package/dist/components/icons/figma.d.ts +1 -1
- package/dist/components/icons/figma.js +12 -34
- package/dist/components/icons/github.d.ts +1 -1
- package/dist/components/icons/github.js +11 -16
- package/dist/components/icons/gitlab.d.ts +1 -1
- package/dist/components/icons/gitlab.js +9 -30
- package/dist/components/icons/google.d.ts +1 -1
- package/dist/components/icons/google.js +9 -39
- package/dist/components/icons/huggingface.d.ts +1 -1
- package/dist/components/icons/huggingface.js +9 -38
- package/dist/components/icons/index.d.ts +35 -35
- package/dist/components/icons/index.js +35 -35
- package/dist/components/icons/kakao.d.ts +1 -1
- package/dist/components/icons/kakao.js +11 -16
- package/dist/components/icons/kick.d.ts +1 -1
- package/dist/components/icons/kick.js +11 -20
- package/dist/components/icons/line.d.ts +1 -1
- package/dist/components/icons/line.js +9 -16
- package/dist/components/icons/linear.d.ts +1 -1
- package/dist/components/icons/linear.js +9 -16
- package/dist/components/icons/linkedin.d.ts +1 -1
- package/dist/components/icons/linkedin.js +9 -33
- package/dist/components/icons/microsoft.d.ts +1 -1
- package/dist/components/icons/microsoft.js +9 -30
- package/dist/components/icons/naver.d.ts +1 -1
- package/dist/components/icons/naver.js +9 -16
- package/dist/components/icons/notion.d.ts +1 -1
- package/dist/components/icons/notion.js +9 -16
- package/dist/components/icons/paybin.d.ts +1 -1
- package/dist/components/icons/paybin.js +8 -32
- package/dist/components/icons/paypal.d.ts +1 -1
- package/dist/components/icons/paypal.js +9 -30
- package/dist/components/icons/polar.d.ts +1 -1
- package/dist/components/icons/polar.js +9 -24
- package/dist/components/icons/railway.d.ts +1 -1
- package/dist/components/icons/railway.js +9 -16
- package/dist/components/icons/reddit.d.ts +1 -1
- package/dist/components/icons/reddit.js +9 -21
- package/dist/components/icons/roblox.d.ts +1 -1
- package/dist/components/icons/roblox.js +12 -17
- package/dist/components/icons/salesforce.d.ts +1 -1
- package/dist/components/icons/salesforce.js +9 -16
- package/dist/components/icons/slack.d.ts +1 -1
- package/dist/components/icons/slack.js +9 -30
- package/dist/components/icons/spotify.d.ts +1 -1
- package/dist/components/icons/spotify.js +9 -16
- package/dist/components/icons/tiktok.d.ts +1 -1
- package/dist/components/icons/tiktok.js +10 -23
- package/dist/components/icons/twitch.d.ts +1 -1
- package/dist/components/icons/twitch.js +12 -43
- package/dist/components/icons/vercel.d.ts +1 -1
- package/dist/components/icons/vercel.js +9 -16
- package/dist/components/icons/vk.d.ts +1 -1
- package/dist/components/icons/vk.js +9 -16
- package/dist/components/icons/wechat.d.ts +1 -1
- package/dist/components/icons/wechat.js +9 -16
- package/dist/components/icons/x.d.ts +1 -1
- package/dist/components/icons/x.js +9 -16
- package/dist/components/icons/zoom.d.ts +1 -1
- package/dist/components/icons/zoom.js +11 -69
- package/dist/components/mutation-invalidator.d.ts +1 -0
- package/dist/components/mutation-invalidator.js +31 -0
- package/dist/components/settings/account/theme-preview.js +7 -286
- package/dist/email.d.ts +1 -1
- package/dist/email.js +1 -11
- package/dist/hooks/auth/use-authenticate.d.ts +3 -3
- package/dist/hooks/auth/use-authenticate.js +28 -22
- package/dist/hooks/auth/use-user.d.ts +34 -34
- package/dist/hooks/auth/use-user.js +14 -10
- package/dist/hooks/use-auth-mutation.d.ts +4 -4
- package/dist/hooks/use-auth-mutation.js +18 -10
- package/dist/hooks/use-auth-plugin.d.ts +1 -1
- package/dist/hooks/use-auth-plugin.js +26 -8
- package/dist/hooks/use-auth-query.d.ts +3 -3
- package/dist/hooks/use-auth-query.js +20 -14
- package/dist/index.d.ts +48 -45
- package/dist/index.js +47 -79
- package/dist/lib/auth-client.d.ts +7 -4
- package/dist/lib/auth-client.js +1 -0
- package/dist/lib/auth-plugin.d.ts +19 -3
- package/dist/lib/auth-plugin.js +1 -0
- package/dist/lib/auth-server.d.ts +10 -3
- package/dist/lib/auth-server.js +1 -0
- package/dist/lib/provider-icons.d.ts +2 -2
- package/dist/lib/provider-icons.js +47 -75
- package/dist/lib/settings-tab.d.ts +19 -0
- package/dist/lib/settings-tab.js +1 -0
- package/dist/lib/utils.d.ts +1 -1
- package/dist/lib/utils.js +4 -7
- package/dist/mutations/api-key/create-api-key-mutation.d.ts +9 -7
- package/dist/mutations/api-key/create-api-key-mutation.js +37 -27
- package/dist/mutations/api-key/delete-api-key-mutation.d.ts +10 -6
- package/dist/mutations/api-key/delete-api-key-mutation.js +37 -27
- package/dist/mutations/auth/request-password-reset-mutation.d.ts +4 -4
- package/dist/mutations/auth/request-password-reset-mutation.js +31 -22
- package/dist/mutations/auth/reset-password-mutation.d.ts +4 -4
- package/dist/mutations/auth/reset-password-mutation.js +32 -22
- package/dist/mutations/auth/send-verification-email-mutation.d.ts +4 -4
- package/dist/mutations/auth/send-verification-email-mutation.js +31 -22
- package/dist/mutations/auth/sign-in-email-mutation.d.ts +10 -10
- package/dist/mutations/auth/sign-in-email-mutation.js +38 -27
- package/dist/mutations/auth/sign-in-social-mutation.d.ts +6 -6
- package/dist/mutations/auth/sign-in-social-mutation.js +36 -22
- package/dist/mutations/auth/sign-out-mutation.d.ts +9 -7
- package/dist/mutations/auth/sign-out-mutation.js +39 -26
- package/dist/mutations/auth/sign-up-email-mutation.d.ts +12 -12
- package/dist/mutations/auth/sign-up-email-mutation.js +34 -27
- package/dist/mutations/auth-mutation-options.d.ts +2 -2
- package/dist/mutations/auth-mutation-options.js +22 -18
- package/dist/mutations/magic-link/sign-in-magic-link-mutation.d.ts +4 -4
- package/dist/mutations/magic-link/sign-in-magic-link-mutation.js +31 -22
- package/dist/mutations/multi-session/revoke-multi-session-mutation.d.ts +8 -8
- package/dist/mutations/multi-session/revoke-multi-session-mutation.js +37 -27
- package/dist/mutations/multi-session/set-active-session-mutation.d.ts +8 -9
- package/dist/mutations/multi-session/set-active-session-mutation.js +38 -29
- package/dist/mutations/organization/accept-invitation-mutation.d.ts +43 -0
- package/dist/mutations/organization/accept-invitation-mutation.js +32 -0
- package/dist/mutations/organization/cancel-invitation-mutation.d.ts +25 -0
- package/dist/mutations/organization/cancel-invitation-mutation.js +28 -0
- package/dist/mutations/organization/check-slug-mutation.d.ts +21 -0
- package/dist/mutations/organization/check-slug-mutation.js +30 -0
- package/dist/mutations/organization/create-organization-mutation.d.ts +39 -0
- package/dist/mutations/organization/create-organization-mutation.js +29 -0
- package/dist/mutations/organization/delete-organization-mutation.d.ts +21 -0
- package/dist/mutations/organization/delete-organization-mutation.js +29 -0
- package/dist/mutations/organization/index.d.ts +12 -0
- package/dist/mutations/organization/index.js +12 -0
- package/dist/mutations/organization/invite-member-mutation.d.ts +43 -0
- package/dist/mutations/organization/invite-member-mutation.js +35 -0
- package/dist/mutations/organization/leave-organization-mutation.d.ts +65 -0
- package/dist/mutations/organization/leave-organization-mutation.js +32 -0
- package/dist/mutations/organization/reject-invitation-mutation.d.ts +31 -0
- package/dist/mutations/organization/reject-invitation-mutation.js +25 -0
- package/dist/mutations/organization/remove-member-mutation.d.ts +35 -0
- package/dist/mutations/organization/remove-member-mutation.js +29 -0
- package/dist/mutations/organization/set-active-organization-mutation.d.ts +71 -0
- package/dist/mutations/organization/set-active-organization-mutation.js +72 -0
- package/dist/mutations/organization/update-member-role-mutation.d.ts +31 -0
- package/dist/mutations/organization/update-member-role-mutation.js +36 -0
- package/dist/mutations/organization/update-organization-mutation.d.ts +21 -0
- package/dist/mutations/organization/update-organization-mutation.js +36 -0
- package/dist/mutations/passkey/add-passkey-mutation.d.ts +16 -16
- package/dist/mutations/passkey/add-passkey-mutation.js +38 -27
- package/dist/mutations/passkey/delete-passkey-mutation.d.ts +8 -8
- package/dist/mutations/passkey/delete-passkey-mutation.js +37 -27
- package/dist/mutations/passkey/sign-in-passkey-mutation.d.ts +24 -24
- package/dist/mutations/passkey/sign-in-passkey-mutation.js +36 -27
- package/dist/mutations/settings/change-email-mutation.d.ts +9 -8
- package/dist/mutations/settings/change-email-mutation.js +35 -27
- package/dist/mutations/settings/change-password-mutation.d.ts +6 -6
- package/dist/mutations/settings/change-password-mutation.js +31 -22
- package/dist/mutations/settings/delete-user-mutation.d.ts +4 -4
- package/dist/mutations/settings/delete-user-mutation.js +31 -22
- package/dist/mutations/settings/link-social-mutation.d.ts +4 -4
- package/dist/mutations/settings/link-social-mutation.js +31 -22
- package/dist/mutations/settings/revoke-session-mutation.d.ts +8 -8
- package/dist/mutations/settings/revoke-session-mutation.js +37 -27
- package/dist/mutations/settings/unlink-account-mutation.d.ts +8 -8
- package/dist/mutations/settings/unlink-account-mutation.js +37 -27
- package/dist/mutations/settings/update-user-mutation.d.ts +8 -8
- package/dist/mutations/settings/update-user-mutation.js +34 -33
- package/dist/mutations/username/is-username-available-mutation.d.ts +4 -4
- package/dist/mutations/username/is-username-available-mutation.js +34 -22
- package/dist/mutations/username/sign-in-username-mutation.d.ts +10 -10
- package/dist/mutations/username/sign-in-username-mutation.js +35 -27
- package/dist/plugins/captcha-plugin.d.ts +3 -3
- package/dist/plugins/captcha-plugin.js +31 -26
- package/dist/plugins.d.ts +1 -1
- package/dist/plugins.js +1 -2
- package/dist/queries/api-key/list-api-keys-query.d.ts +20 -11
- package/dist/queries/api-key/list-api-keys-query.js +52 -29
- package/dist/queries/auth/session-query.d.ts +6 -6
- package/dist/queries/auth/session-query.js +70 -28
- package/dist/queries/auth-query-options.d.ts +2 -2
- package/dist/queries/auth-query-options.js +20 -16
- package/dist/queries/multi-session/list-device-sessions-query.d.ts +8 -8
- package/dist/queries/multi-session/list-device-sessions-query.js +83 -29
- package/dist/queries/organization/active-organization-query.d.ts +39 -0
- package/dist/queries/organization/active-organization-query.js +37 -0
- package/dist/queries/organization/full-organization-query.d.ts +37 -0
- package/dist/queries/organization/full-organization-query.js +31 -0
- package/dist/queries/organization/has-permission-query.d.ts +21 -0
- package/dist/queries/organization/has-permission-query.js +38 -0
- package/dist/queries/organization/index.d.ts +7 -0
- package/dist/queries/organization/index.js +7 -0
- package/dist/queries/organization/list-invitations-query.d.ts +29 -0
- package/dist/queries/organization/list-invitations-query.js +37 -0
- package/dist/queries/organization/list-members-query.d.ts +61 -0
- package/dist/queries/organization/list-members-query.js +37 -0
- package/dist/queries/organization/list-organizations-query.d.ts +22 -0
- package/dist/queries/organization/list-organizations-query.js +31 -0
- package/dist/queries/organization/list-user-invitations-query.d.ts +29 -0
- package/dist/queries/organization/list-user-invitations-query.js +31 -0
- package/dist/queries/passkey/list-passkeys-query.d.ts +8 -8
- package/dist/queries/passkey/list-passkeys-query.js +81 -29
- package/dist/queries/settings/account-info-query.d.ts +6 -6
- package/dist/queries/settings/account-info-query.js +85 -29
- package/dist/queries/settings/list-accounts-query.d.ts +6 -6
- package/dist/queries/settings/list-accounts-query.js +83 -29
- package/dist/queries/settings/list-sessions-query.d.ts +6 -6
- package/dist/queries/settings/list-sessions-query.js +81 -29
- package/dist/server/queries/api-key/list-api-keys-query.d.ts +83 -0
- package/dist/server/queries/api-key/list-api-keys-query.js +49 -0
- package/dist/server/queries/auth/session-query.d.ts +5 -5
- package/dist/server/queries/auth/session-query.js +50 -12
- package/dist/server/queries/multi-session/list-device-sessions-query.d.ts +7 -7
- package/dist/server/queries/multi-session/list-device-sessions-query.js +53 -11
- package/dist/server/queries/organization/active-organization-query.d.ts +61 -0
- package/dist/server/queries/organization/active-organization-query.js +25 -0
- package/dist/server/queries/organization/full-organization-query.d.ts +42 -0
- package/dist/server/queries/organization/full-organization-query.js +21 -0
- package/dist/server/queries/organization/has-permission-query.d.ts +66 -0
- package/dist/server/queries/organization/has-permission-query.js +23 -0
- package/dist/server/queries/organization/list-invitations-query.d.ts +34 -0
- package/dist/server/queries/organization/list-invitations-query.js +21 -0
- package/dist/server/queries/organization/list-members-query.d.ts +66 -0
- package/dist/server/queries/organization/list-members-query.js +21 -0
- package/dist/server/queries/organization/list-organizations-query.d.ts +27 -0
- package/dist/server/queries/organization/list-organizations-query.js +21 -0
- package/dist/server/queries/organization/list-user-invitations-query.d.ts +34 -0
- package/dist/server/queries/organization/list-user-invitations-query.js +21 -0
- package/dist/server/queries/passkey/list-passkeys-query.d.ts +7 -7
- package/dist/server/queries/passkey/list-passkeys-query.js +53 -11
- package/dist/server/queries/settings/account-info-query.d.ts +5 -5
- package/dist/server/queries/settings/account-info-query.js +53 -11
- package/dist/server/queries/settings/list-accounts-query.d.ts +5 -5
- package/dist/server/queries/settings/list-accounts-query.js +53 -11
- package/dist/server/queries/settings/list-sessions-query.d.ts +5 -5
- package/dist/server/queries/settings/list-sessions-query.js +53 -11
- package/dist/server.d.ts +15 -7
- package/dist/server.js +14 -7
- package/package.json +20 -17
- package/src/components/auth/auth-context.tsx +7 -0
- package/src/components/auth/auth-provider.tsx +19 -31
- package/src/components/auth/email/email-localization.tsx +5 -3
- package/src/components/auth/email/index.ts +1 -0
- package/src/components/auth/email/organization-invitation.tsx +454 -0
- package/src/components/mutation-invalidator.tsx +67 -0
- package/src/index.ts +3 -0
- package/src/lib/auth-client.ts +7 -0
- package/src/lib/auth-plugin.ts +17 -0
- package/src/lib/auth-server.ts +17 -1
- package/src/lib/settings-tab.ts +21 -0
- package/src/mutations/api-key/create-api-key-mutation.ts +34 -19
- package/src/mutations/api-key/delete-api-key-mutation.ts +36 -19
- package/src/mutations/auth/sign-in-email-mutation.ts +18 -22
- package/src/mutations/auth/sign-out-mutation.ts +19 -13
- package/src/mutations/auth/sign-up-email-mutation.ts +18 -22
- package/src/mutations/multi-session/revoke-multi-session-mutation.ts +31 -20
- package/src/mutations/multi-session/set-active-session-mutation.ts +25 -44
- package/src/mutations/organization/accept-invitation-mutation.ts +71 -0
- package/src/mutations/organization/cancel-invitation-mutation.ts +67 -0
- package/src/mutations/organization/check-slug-mutation.ts +55 -0
- package/src/mutations/organization/create-organization-mutation.ts +71 -0
- package/src/mutations/organization/delete-organization-mutation.ts +71 -0
- package/src/mutations/organization/index.ts +12 -0
- package/src/mutations/organization/invite-member-mutation.ts +81 -0
- package/src/mutations/organization/leave-organization-mutation.ts +74 -0
- package/src/mutations/organization/reject-invitation-mutation.ts +64 -0
- package/src/mutations/organization/remove-member-mutation.ts +67 -0
- package/src/mutations/organization/set-active-organization-mutation.ts +142 -0
- package/src/mutations/organization/update-member-role-mutation.ts +81 -0
- package/src/mutations/organization/update-organization-mutation.ts +84 -0
- package/src/mutations/passkey/add-passkey-mutation.ts +28 -17
- package/src/mutations/passkey/delete-passkey-mutation.ts +27 -17
- package/src/mutations/passkey/sign-in-passkey-mutation.ts +18 -21
- package/src/mutations/settings/change-email-mutation.ts +22 -18
- package/src/mutations/settings/delete-user-mutation.ts +2 -2
- package/src/mutations/settings/revoke-session-mutation.ts +24 -19
- package/src/mutations/settings/unlink-account-mutation.ts +24 -17
- package/src/mutations/settings/update-user-mutation.ts +18 -30
- package/src/mutations/username/is-username-available-mutation.ts +2 -2
- package/src/mutations/username/sign-in-username-mutation.ts +20 -23
- package/src/queries/api-key/list-api-keys-query.ts +20 -8
- package/src/queries/multi-session/list-device-sessions-query.ts +2 -2
- package/src/queries/organization/active-organization-query.ts +140 -0
- package/src/queries/organization/full-organization-query.ts +113 -0
- package/src/queries/organization/has-permission-query.ts +124 -0
- package/src/queries/organization/index.ts +7 -0
- package/src/queries/organization/list-invitations-query.ts +133 -0
- package/src/queries/organization/list-members-query.ts +133 -0
- package/src/queries/organization/list-organizations-query.ts +122 -0
- package/src/queries/organization/list-user-invitations-query.ts +122 -0
- package/src/queries/passkey/list-passkeys-query.ts +2 -2
- package/src/server/queries/api-key/list-api-keys-query.ts +94 -0
- package/src/server/queries/multi-session/list-device-sessions-query.ts +2 -2
- package/src/server/queries/organization/active-organization-query.ts +92 -0
- package/src/server/queries/organization/full-organization-query.ts +64 -0
- package/src/server/queries/organization/has-permission-query.ts +66 -0
- package/src/server/queries/organization/list-invitations-query.ts +81 -0
- package/src/server/queries/organization/list-members-query.ts +75 -0
- package/src/server/queries/organization/list-organizations-query.ts +67 -0
- package/src/server/queries/organization/list-user-invitations-query.ts +68 -0
- package/src/server/queries/passkey/list-passkeys-query.ts +2 -2
- package/src/server.ts +8 -0
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
-
import {
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import {
|
|
3
|
+
mutationOptions,
|
|
4
|
+
type QueryClient,
|
|
5
|
+
useMutation
|
|
6
|
+
} from "@tanstack/react-query"
|
|
3
7
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
8
|
|
|
5
9
|
import type { AuthClient } from "../../lib/auth-client"
|
|
6
|
-
import {
|
|
10
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
7
11
|
|
|
8
12
|
export type RevokeSessionParams<TAuthClient extends AuthClient> = Parameters<
|
|
9
13
|
TAuthClient["revokeSession"]
|
|
@@ -11,7 +15,7 @@ export type RevokeSessionParams<TAuthClient extends AuthClient> = Parameters<
|
|
|
11
15
|
|
|
12
16
|
export type RevokeSessionOptions<TAuthClient extends AuthClient> = Omit<
|
|
13
17
|
ReturnType<typeof revokeSessionOptions<TAuthClient>>,
|
|
14
|
-
"mutationKey" | "mutationFn"
|
|
18
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
15
19
|
>
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -43,27 +47,28 @@ export function revokeSessionOptions<TAuthClient extends AuthClient>(
|
|
|
43
47
|
/**
|
|
44
48
|
* Create a mutation for revoking a user session.
|
|
45
49
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* and `retry`.
|
|
50
|
+
* On success, `MutationInvalidator` awaits invalidation of the sessions
|
|
51
|
+
* list (see `meta.awaits`).
|
|
49
52
|
*
|
|
50
53
|
* @param authClient - The Better Auth client.
|
|
51
54
|
* @param options - React Query options forwarded to `useMutation`.
|
|
52
55
|
*/
|
|
53
56
|
export function useRevokeSession<TAuthClient extends AuthClient>(
|
|
54
57
|
authClient: TAuthClient,
|
|
55
|
-
options?: RevokeSessionOptions<TAuthClient
|
|
58
|
+
options?: RevokeSessionOptions<TAuthClient>,
|
|
59
|
+
queryClient?: QueryClient
|
|
56
60
|
) {
|
|
57
|
-
const {
|
|
58
|
-
|
|
59
|
-
})
|
|
61
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
62
|
+
const userId = session?.user.id
|
|
60
63
|
|
|
61
|
-
return useMutation(
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
return useMutation(
|
|
65
|
+
{
|
|
66
|
+
...revokeSessionOptions(authClient),
|
|
67
|
+
...options,
|
|
68
|
+
meta: {
|
|
69
|
+
awaits: [authQueryKeys.listSessions(userId)]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
queryClient
|
|
73
|
+
)
|
|
69
74
|
}
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
import { authMutationKeys } from "@better-auth-ui/core"
|
|
2
|
-
import {
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import {
|
|
3
|
+
mutationOptions,
|
|
4
|
+
type QueryClient,
|
|
5
|
+
useMutation
|
|
6
|
+
} from "@tanstack/react-query"
|
|
3
7
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
8
|
|
|
5
9
|
import type { AuthClient } from "../../lib/auth-client"
|
|
6
|
-
import {
|
|
10
|
+
import { useSession } from "../../queries/auth/session-query"
|
|
7
11
|
|
|
8
12
|
export type UnlinkAccountParams<TAuthClient extends AuthClient> = Parameters<
|
|
9
13
|
TAuthClient["unlinkAccount"]
|
|
@@ -11,7 +15,7 @@ export type UnlinkAccountParams<TAuthClient extends AuthClient> = Parameters<
|
|
|
11
15
|
|
|
12
16
|
export type UnlinkAccountOptions<TAuthClient extends AuthClient> = Omit<
|
|
13
17
|
ReturnType<typeof unlinkAccountOptions<TAuthClient>>,
|
|
14
|
-
"mutationKey" | "mutationFn"
|
|
18
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
15
19
|
>
|
|
16
20
|
|
|
17
21
|
/**
|
|
@@ -43,25 +47,28 @@ export function unlinkAccountOptions<TAuthClient extends AuthClient>(
|
|
|
43
47
|
/**
|
|
44
48
|
* Create a mutation for unlinking a social provider from the current user.
|
|
45
49
|
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
* `onError`, and `retry`.
|
|
50
|
+
* On success, `MutationInvalidator` awaits invalidation of the linked
|
|
51
|
+
* accounts list (see `meta.awaits`).
|
|
49
52
|
*
|
|
50
53
|
* @param authClient - The Better Auth client.
|
|
51
54
|
* @param options - React Query options forwarded to `useMutation`.
|
|
52
55
|
*/
|
|
53
56
|
export function useUnlinkAccount<TAuthClient extends AuthClient>(
|
|
54
57
|
authClient: TAuthClient,
|
|
55
|
-
options?: UnlinkAccountOptions<TAuthClient
|
|
58
|
+
options?: UnlinkAccountOptions<TAuthClient>,
|
|
59
|
+
queryClient?: QueryClient
|
|
56
60
|
) {
|
|
57
|
-
const {
|
|
61
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
62
|
+
const userId = session?.user.id
|
|
58
63
|
|
|
59
|
-
return useMutation(
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
return useMutation(
|
|
65
|
+
{
|
|
66
|
+
...unlinkAccountOptions(authClient),
|
|
67
|
+
...options,
|
|
68
|
+
meta: {
|
|
69
|
+
awaits: [authQueryKeys.listAccounts(userId)]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
queryClient
|
|
73
|
+
)
|
|
67
74
|
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { authMutationKeys } from "@better-auth-ui/core"
|
|
1
|
+
import { authMutationKeys, authQueryKeys } from "@better-auth-ui/core"
|
|
2
2
|
import {
|
|
3
3
|
mutationOptions,
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
type QueryClient,
|
|
5
|
+
useMutation
|
|
6
6
|
} from "@tanstack/react-query"
|
|
7
7
|
import type { BetterFetchError } from "better-auth/react"
|
|
8
|
+
|
|
8
9
|
import type { AuthClient } from "../../lib/auth-client"
|
|
9
|
-
import { sessionOptions, useSession } from "../../queries/auth/session-query"
|
|
10
10
|
|
|
11
11
|
export type UpdateUserParams<TAuthClient extends AuthClient> = Parameters<
|
|
12
12
|
TAuthClient["updateUser"]
|
|
@@ -14,7 +14,7 @@ export type UpdateUserParams<TAuthClient extends AuthClient> = Parameters<
|
|
|
14
14
|
|
|
15
15
|
export type UpdateUserOptions<TAuthClient extends AuthClient> = Omit<
|
|
16
16
|
ReturnType<typeof updateUserOptions<TAuthClient>>,
|
|
17
|
-
"mutationKey" | "mutationFn"
|
|
17
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
18
18
|
>
|
|
19
19
|
|
|
20
20
|
/**
|
|
@@ -46,37 +46,25 @@ export function updateUserOptions<TAuthClient extends AuthClient>(
|
|
|
46
46
|
/**
|
|
47
47
|
* Create a mutation for updating the authenticated user's profile.
|
|
48
48
|
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* mutation options such as `onSuccess`, `onError`, and `retry`.
|
|
49
|
+
* On success, `MutationInvalidator` awaits invalidation of the session
|
|
50
|
+
* query so the updated user fields are reflected (see `meta.awaits`).
|
|
52
51
|
*
|
|
53
52
|
* @param authClient - The Better Auth client.
|
|
54
53
|
* @param options - React Query options forwarded to `useMutation`.
|
|
55
54
|
*/
|
|
56
55
|
export function useUpdateUser<TAuthClient extends AuthClient>(
|
|
57
56
|
authClient: TAuthClient,
|
|
58
|
-
options?: UpdateUserOptions<TAuthClient
|
|
57
|
+
options?: UpdateUserOptions<TAuthClient>,
|
|
58
|
+
queryClient?: QueryClient
|
|
59
59
|
) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
return useMutation({
|
|
67
|
-
...updateUserOptions(authClient),
|
|
68
|
-
...options,
|
|
69
|
-
onSuccess: async (data, variables, ...rest) => {
|
|
70
|
-
if (session) {
|
|
71
|
-
queryClient.setQueryData(sessionOptions(authClient).queryKey, {
|
|
72
|
-
...session,
|
|
73
|
-
user: { ...session.user, ...variables }
|
|
74
|
-
})
|
|
60
|
+
return useMutation(
|
|
61
|
+
{
|
|
62
|
+
...updateUserOptions(authClient),
|
|
63
|
+
...options,
|
|
64
|
+
meta: {
|
|
65
|
+
awaits: [authQueryKeys.session]
|
|
75
66
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
await options?.onSuccess?.(data, variables, ...rest)
|
|
80
|
-
}
|
|
81
|
-
})
|
|
67
|
+
},
|
|
68
|
+
queryClient
|
|
69
|
+
)
|
|
82
70
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { usernameMutationKeys } from "@better-auth-ui/core/plugins"
|
|
2
2
|
import { mutationOptions, useMutation } from "@tanstack/react-query"
|
|
3
3
|
import type { BetterFetchError } from "better-auth/react"
|
|
4
4
|
|
|
@@ -24,7 +24,7 @@ export type IsUsernameAvailableOptions<TAuthClient extends UsernameAuthClient> =
|
|
|
24
24
|
export function isUsernameAvailableOptions<
|
|
25
25
|
TAuthClient extends UsernameAuthClient
|
|
26
26
|
>(authClient: TAuthClient) {
|
|
27
|
-
const mutationKey =
|
|
27
|
+
const mutationKey = usernameMutationKeys.isUsernameAvailable
|
|
28
28
|
|
|
29
29
|
const mutationFn = (params: IsUsernameAvailableParams<TAuthClient>) =>
|
|
30
30
|
authClient.isUsernameAvailable({
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { authQueryKeys } from "@better-auth-ui/core"
|
|
2
|
+
import { usernameMutationKeys } from "@better-auth-ui/core/plugins"
|
|
2
3
|
import {
|
|
3
4
|
mutationOptions,
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
type QueryClient,
|
|
6
|
+
useMutation
|
|
6
7
|
} from "@tanstack/react-query"
|
|
7
8
|
import type { BetterFetchError } from "better-auth/react"
|
|
8
9
|
|
|
9
10
|
import type { UsernameAuthClient } from "../../lib/auth-client"
|
|
10
|
-
import { sessionOptions } from "../../queries/auth/session-query"
|
|
11
11
|
|
|
12
12
|
export type SignInUsernameParams<TAuthClient extends UsernameAuthClient> =
|
|
13
13
|
Parameters<TAuthClient["signIn"]["username"]>[0]
|
|
@@ -15,7 +15,7 @@ export type SignInUsernameParams<TAuthClient extends UsernameAuthClient> =
|
|
|
15
15
|
export type SignInUsernameOptions<TAuthClient extends UsernameAuthClient> =
|
|
16
16
|
Omit<
|
|
17
17
|
ReturnType<typeof signInUsernameOptions<TAuthClient>>,
|
|
18
|
-
"mutationKey" | "mutationFn"
|
|
18
|
+
"mutationKey" | "mutationFn" | "meta"
|
|
19
19
|
>
|
|
20
20
|
|
|
21
21
|
/**
|
|
@@ -26,7 +26,7 @@ export type SignInUsernameOptions<TAuthClient extends UsernameAuthClient> =
|
|
|
26
26
|
export function signInUsernameOptions<TAuthClient extends UsernameAuthClient>(
|
|
27
27
|
authClient: TAuthClient
|
|
28
28
|
) {
|
|
29
|
-
const mutationKey =
|
|
29
|
+
const mutationKey = usernameMutationKeys.signIn
|
|
30
30
|
|
|
31
31
|
const mutationFn = (params: SignInUsernameParams<TAuthClient>) =>
|
|
32
32
|
authClient.signIn.username({
|
|
@@ -47,28 +47,25 @@ export function signInUsernameOptions<TAuthClient extends UsernameAuthClient>(
|
|
|
47
47
|
/**
|
|
48
48
|
* Create a mutation for username/password sign-in.
|
|
49
49
|
*
|
|
50
|
-
*
|
|
51
|
-
* the new session is refetched
|
|
52
|
-
* such as `onSuccess`, `onError`, and `retry`.
|
|
50
|
+
* On success, `MutationInvalidator` awaits invalidation of the session
|
|
51
|
+
* query so the new session is refetched (see `meta.awaits`).
|
|
53
52
|
*
|
|
54
53
|
* @param authClient - The Better Auth client with the username plugin.
|
|
55
54
|
* @param options - React Query options forwarded to `useMutation`.
|
|
56
55
|
*/
|
|
57
56
|
export function useSignInUsername<TAuthClient extends UsernameAuthClient>(
|
|
58
57
|
authClient: TAuthClient,
|
|
59
|
-
options?: SignInUsernameOptions<TAuthClient
|
|
58
|
+
options?: SignInUsernameOptions<TAuthClient>,
|
|
59
|
+
queryClient?: QueryClient
|
|
60
60
|
) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
await options?.onSuccess?.(...args)
|
|
72
|
-
}
|
|
73
|
-
})
|
|
61
|
+
return useMutation(
|
|
62
|
+
{
|
|
63
|
+
...signInUsernameOptions(authClient),
|
|
64
|
+
...options,
|
|
65
|
+
meta: {
|
|
66
|
+
awaits: [authQueryKeys.session]
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
queryClient
|
|
70
|
+
)
|
|
74
71
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { apiKeyQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
2
|
import {
|
|
3
3
|
type DataTag,
|
|
4
4
|
type QueryClient,
|
|
@@ -11,18 +11,21 @@ import type { BetterFetchError } from "better-auth/react"
|
|
|
11
11
|
import type { ApiKeyAuthClient, InferData } from "../../lib/auth-client"
|
|
12
12
|
import { useSession } from "../auth/session-query"
|
|
13
13
|
|
|
14
|
-
export type ListApiKeysData<
|
|
15
|
-
TAuthClient
|
|
16
|
-
>
|
|
14
|
+
export type ListApiKeysData<
|
|
15
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
16
|
+
> = InferData<TAuthClient["apiKey"]["list"]>
|
|
17
17
|
|
|
18
|
-
export type ListApiKeysParams<
|
|
19
|
-
|
|
18
|
+
export type ListApiKeysParams<
|
|
19
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
20
|
+
> = Parameters<TAuthClient["apiKey"]["list"]>[0]
|
|
20
21
|
|
|
21
22
|
export type ListedApiKey<
|
|
22
23
|
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
23
24
|
> = NonNullable<ListApiKeysData<TAuthClient>>["apiKeys"][number]
|
|
24
25
|
|
|
25
|
-
export type ListApiKeysOptions<
|
|
26
|
+
export type ListApiKeysOptions<
|
|
27
|
+
TAuthClient extends ApiKeyAuthClient = ApiKeyAuthClient
|
|
28
|
+
> = Omit<
|
|
26
29
|
ReturnType<typeof listApiKeysOptions<TAuthClient>>,
|
|
27
30
|
"queryKey" | "queryFn"
|
|
28
31
|
>
|
|
@@ -30,6 +33,10 @@ export type ListApiKeysOptions<TAuthClient extends ApiKeyAuthClient> = Omit<
|
|
|
30
33
|
/**
|
|
31
34
|
* Query options factory for the current user's API keys.
|
|
32
35
|
*
|
|
36
|
+
* Shares a query key with the server-side `listApiKeysOptions` from
|
|
37
|
+
* `@better-auth-ui/react/server`, so SSR-hydrated data is reused from the
|
|
38
|
+
* cache without an immediate refetch.
|
|
39
|
+
*
|
|
33
40
|
* @param authClient - The Better Auth client with the API key plugin.
|
|
34
41
|
* @param userId - The current signed-in user's ID. Used for cache partitioning.
|
|
35
42
|
* @param params - Parameters forwarded to `authClient.apiKey.list`.
|
|
@@ -40,7 +47,7 @@ export function listApiKeysOptions<TAuthClient extends ApiKeyAuthClient>(
|
|
|
40
47
|
params?: ListApiKeysParams<TAuthClient>
|
|
41
48
|
) {
|
|
42
49
|
type TData = ListApiKeysData<TAuthClient>
|
|
43
|
-
const queryKey =
|
|
50
|
+
const queryKey = apiKeyQueryKeys.list(userId, params?.query)
|
|
44
51
|
|
|
45
52
|
const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
|
|
46
53
|
{
|
|
@@ -85,6 +92,11 @@ export type UseListApiKeysOptions<TAuthClient extends ApiKeyAuthClient> =
|
|
|
85
92
|
/**
|
|
86
93
|
* Subscribe to the current user's API keys via TanStack Query.
|
|
87
94
|
*
|
|
95
|
+
* Shares a query key with the server-side `listApiKeysOptions`, so
|
|
96
|
+
* SSR-hydrated data is reused from the cache without an immediate refetch.
|
|
97
|
+
* The query is gated on a signed-in user; while the session is loading or
|
|
98
|
+
* absent, the underlying `queryFn` is replaced with `skipToken`.
|
|
99
|
+
*
|
|
88
100
|
* @param authClient - The Better Auth client with the API key plugin.
|
|
89
101
|
* @param options - `apiKey.list` params merged with `useQuery` options.
|
|
90
102
|
* @param queryClient - Optional custom `QueryClient`.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { multiSessionQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
2
|
import {
|
|
3
3
|
type DataTag,
|
|
4
4
|
type QueryClient,
|
|
@@ -45,7 +45,7 @@ export function listDeviceSessionsOptions<
|
|
|
45
45
|
params?: ListDeviceSessionsParams<TAuthClient>
|
|
46
46
|
) {
|
|
47
47
|
type TData = ListDeviceSessionsData<TAuthClient>
|
|
48
|
-
const queryKey =
|
|
48
|
+
const queryKey = multiSessionQueryKeys.list(userId, params?.query)
|
|
49
49
|
|
|
50
50
|
const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
|
|
51
51
|
{
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import {
|
|
2
|
+
organizationPlugin,
|
|
3
|
+
organizationQueryKeys
|
|
4
|
+
} from "@better-auth-ui/core/plugins"
|
|
5
|
+
import {
|
|
6
|
+
type DataTag,
|
|
7
|
+
type QueryClient,
|
|
8
|
+
queryOptions,
|
|
9
|
+
skipToken,
|
|
10
|
+
useQuery
|
|
11
|
+
} from "@tanstack/react-query"
|
|
12
|
+
import type { BetterFetchError } from "better-auth/react"
|
|
13
|
+
import { useAuthPlugin } from "../../hooks/use-auth-plugin"
|
|
14
|
+
import type { OrganizationAuthClient } from "../../lib/auth-client"
|
|
15
|
+
import { useSession } from "../auth/session-query"
|
|
16
|
+
import type { FullOrganizationParams } from "./full-organization-query"
|
|
17
|
+
import type { ListOrganization } from "./list-organizations-query"
|
|
18
|
+
|
|
19
|
+
// The active-organization cache holds a `ListOrganization`-shaped value even
|
|
20
|
+
// though we fetch via `getFullOrganization`. The `members`/`invitations`
|
|
21
|
+
// fields are intentionally discarded by the `as Promise<TData>` cast in
|
|
22
|
+
// `queryFn` below so that `setActive`'s optimistic update — which can only
|
|
23
|
+
// produce a list-shaped org — never corrupts a full-detail cache entry.
|
|
24
|
+
// See `organizationQueryKeys.activeOrganization` for the rationale.
|
|
25
|
+
export type ActiveOrganizationData<
|
|
26
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
27
|
+
> = ListOrganization<TAuthClient>
|
|
28
|
+
|
|
29
|
+
export type ActiveOrganizationParams<
|
|
30
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
31
|
+
> = FullOrganizationParams<TAuthClient>
|
|
32
|
+
|
|
33
|
+
export type ActiveOrganizationOptions<
|
|
34
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
35
|
+
> = Omit<
|
|
36
|
+
ReturnType<typeof activeOrganizationOptions<TAuthClient>>,
|
|
37
|
+
"queryKey" | "queryFn"
|
|
38
|
+
>
|
|
39
|
+
|
|
40
|
+
export function activeOrganizationOptions<
|
|
41
|
+
TAuthClient extends OrganizationAuthClient
|
|
42
|
+
>(
|
|
43
|
+
authClient: TAuthClient,
|
|
44
|
+
userId: string | undefined,
|
|
45
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
46
|
+
) {
|
|
47
|
+
type TData = ActiveOrganizationData<TAuthClient>
|
|
48
|
+
const queryKey = organizationQueryKeys.activeOrganization(
|
|
49
|
+
userId,
|
|
50
|
+
params?.query
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
|
|
54
|
+
{
|
|
55
|
+
queryKey,
|
|
56
|
+
queryFn: ({ signal }) =>
|
|
57
|
+
authClient.organization.getFullOrganization({
|
|
58
|
+
...params,
|
|
59
|
+
fetchOptions: { ...params?.fetchOptions, signal, throw: true }
|
|
60
|
+
}) as Promise<TData>
|
|
61
|
+
}
|
|
62
|
+
)
|
|
63
|
+
|
|
64
|
+
return options as typeof options & {
|
|
65
|
+
queryKey: DataTag<typeof queryKey, TData, BetterFetchError>
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const ensureActiveOrganization = <
|
|
70
|
+
TAuthClient extends OrganizationAuthClient
|
|
71
|
+
>(
|
|
72
|
+
queryClient: QueryClient,
|
|
73
|
+
authClient: TAuthClient,
|
|
74
|
+
userId: string | undefined,
|
|
75
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
76
|
+
) =>
|
|
77
|
+
queryClient.ensureQueryData(
|
|
78
|
+
activeOrganizationOptions(authClient, userId, params)
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
export const prefetchActiveOrganization = <
|
|
82
|
+
TAuthClient extends OrganizationAuthClient
|
|
83
|
+
>(
|
|
84
|
+
queryClient: QueryClient,
|
|
85
|
+
authClient: TAuthClient,
|
|
86
|
+
userId: string | undefined,
|
|
87
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
88
|
+
) =>
|
|
89
|
+
queryClient.prefetchQuery(
|
|
90
|
+
activeOrganizationOptions(authClient, userId, params)
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
export const fetchActiveOrganization = <
|
|
94
|
+
TAuthClient extends OrganizationAuthClient
|
|
95
|
+
>(
|
|
96
|
+
queryClient: QueryClient,
|
|
97
|
+
authClient: TAuthClient,
|
|
98
|
+
userId: string | undefined,
|
|
99
|
+
params?: ActiveOrganizationParams<TAuthClient>
|
|
100
|
+
) =>
|
|
101
|
+
queryClient.fetchQuery(activeOrganizationOptions(authClient, userId, params))
|
|
102
|
+
|
|
103
|
+
export type UseActiveOrganizationOptions<
|
|
104
|
+
TAuthClient extends OrganizationAuthClient
|
|
105
|
+
> = ActiveOrganizationOptions<TAuthClient> &
|
|
106
|
+
ActiveOrganizationParams<TAuthClient>
|
|
107
|
+
|
|
108
|
+
export function useActiveOrganization<
|
|
109
|
+
TAuthClient extends OrganizationAuthClient
|
|
110
|
+
>(
|
|
111
|
+
authClient: TAuthClient,
|
|
112
|
+
options: UseActiveOrganizationOptions<TAuthClient> = {},
|
|
113
|
+
queryClient?: QueryClient
|
|
114
|
+
) {
|
|
115
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
116
|
+
const userId = session?.user.id
|
|
117
|
+
|
|
118
|
+
const { slug } = useAuthPlugin(organizationPlugin)
|
|
119
|
+
|
|
120
|
+
const { query, fetchOptions, ...queryOptions } = options
|
|
121
|
+
|
|
122
|
+
const baseOptions = activeOrganizationOptions(authClient, userId, {
|
|
123
|
+
fetchOptions,
|
|
124
|
+
query: slug ? { organizationSlug: slug } : query
|
|
125
|
+
})
|
|
126
|
+
|
|
127
|
+
return useQuery(
|
|
128
|
+
{
|
|
129
|
+
...queryOptions,
|
|
130
|
+
...baseOptions,
|
|
131
|
+
queryFn:
|
|
132
|
+
slug === null
|
|
133
|
+
? async () => null
|
|
134
|
+
: userId
|
|
135
|
+
? baseOptions.queryFn
|
|
136
|
+
: skipToken
|
|
137
|
+
},
|
|
138
|
+
queryClient
|
|
139
|
+
)
|
|
140
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { organizationQueryKeys } from "@better-auth-ui/core/plugins"
|
|
2
|
+
import {
|
|
3
|
+
type DataTag,
|
|
4
|
+
type QueryClient,
|
|
5
|
+
queryOptions,
|
|
6
|
+
skipToken,
|
|
7
|
+
useQuery
|
|
8
|
+
} from "@tanstack/react-query"
|
|
9
|
+
import type { BetterFetchError } from "better-auth/react"
|
|
10
|
+
|
|
11
|
+
import type { InferData, OrganizationAuthClient } from "../../lib/auth-client"
|
|
12
|
+
import { useSession } from "../auth/session-query"
|
|
13
|
+
|
|
14
|
+
export type FullOrganizationData<
|
|
15
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
16
|
+
> = InferData<TAuthClient["organization"]["getFullOrganization"]>
|
|
17
|
+
|
|
18
|
+
export type FullOrganizationParams<
|
|
19
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
20
|
+
> = Parameters<TAuthClient["organization"]["getFullOrganization"]>[0]
|
|
21
|
+
|
|
22
|
+
export type FullOrganizationOptions<
|
|
23
|
+
TAuthClient extends OrganizationAuthClient = OrganizationAuthClient
|
|
24
|
+
> = Omit<
|
|
25
|
+
ReturnType<typeof fullOrganizationOptions<TAuthClient>>,
|
|
26
|
+
"queryKey" | "queryFn"
|
|
27
|
+
>
|
|
28
|
+
|
|
29
|
+
export function fullOrganizationOptions<
|
|
30
|
+
TAuthClient extends OrganizationAuthClient
|
|
31
|
+
>(
|
|
32
|
+
authClient: TAuthClient,
|
|
33
|
+
userId: string | undefined,
|
|
34
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
35
|
+
) {
|
|
36
|
+
type TData = FullOrganizationData<TAuthClient>
|
|
37
|
+
const queryKey = organizationQueryKeys.fullDetail(userId, params?.query)
|
|
38
|
+
|
|
39
|
+
const options = queryOptions<TData, BetterFetchError, TData, typeof queryKey>(
|
|
40
|
+
{
|
|
41
|
+
queryKey,
|
|
42
|
+
queryFn: ({ signal }) =>
|
|
43
|
+
authClient.organization.getFullOrganization({
|
|
44
|
+
...params,
|
|
45
|
+
fetchOptions: { ...params?.fetchOptions, signal, throw: true }
|
|
46
|
+
}) as Promise<TData>
|
|
47
|
+
}
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
return options as typeof options & {
|
|
51
|
+
queryKey: DataTag<typeof queryKey, TData, BetterFetchError>
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export const ensureFullOrganization = <
|
|
56
|
+
TAuthClient extends OrganizationAuthClient
|
|
57
|
+
>(
|
|
58
|
+
queryClient: QueryClient,
|
|
59
|
+
authClient: TAuthClient,
|
|
60
|
+
userId: string | undefined,
|
|
61
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
62
|
+
) =>
|
|
63
|
+
queryClient.ensureQueryData(
|
|
64
|
+
fullOrganizationOptions(authClient, userId, params)
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
export const prefetchFullOrganization = <
|
|
68
|
+
TAuthClient extends OrganizationAuthClient
|
|
69
|
+
>(
|
|
70
|
+
queryClient: QueryClient,
|
|
71
|
+
authClient: TAuthClient,
|
|
72
|
+
userId: string | undefined,
|
|
73
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
74
|
+
) =>
|
|
75
|
+
queryClient.prefetchQuery(fullOrganizationOptions(authClient, userId, params))
|
|
76
|
+
|
|
77
|
+
export const fetchFullOrganization = <
|
|
78
|
+
TAuthClient extends OrganizationAuthClient
|
|
79
|
+
>(
|
|
80
|
+
queryClient: QueryClient,
|
|
81
|
+
authClient: TAuthClient,
|
|
82
|
+
userId: string | undefined,
|
|
83
|
+
params?: FullOrganizationParams<TAuthClient>
|
|
84
|
+
) => queryClient.fetchQuery(fullOrganizationOptions(authClient, userId, params))
|
|
85
|
+
|
|
86
|
+
export type UseFullOrganizationOptions<
|
|
87
|
+
TAuthClient extends OrganizationAuthClient
|
|
88
|
+
> = FullOrganizationOptions<TAuthClient> & FullOrganizationParams<TAuthClient>
|
|
89
|
+
|
|
90
|
+
export function useFullOrganization<TAuthClient extends OrganizationAuthClient>(
|
|
91
|
+
authClient: TAuthClient,
|
|
92
|
+
options: UseFullOrganizationOptions<TAuthClient> = {},
|
|
93
|
+
queryClient?: QueryClient
|
|
94
|
+
) {
|
|
95
|
+
const { data: session } = useSession(authClient, undefined, queryClient)
|
|
96
|
+
const userId = session?.user.id
|
|
97
|
+
|
|
98
|
+
const { query, fetchOptions, ...queryOptions } = options
|
|
99
|
+
|
|
100
|
+
const baseOptions = fullOrganizationOptions(authClient, userId, {
|
|
101
|
+
query,
|
|
102
|
+
fetchOptions
|
|
103
|
+
})
|
|
104
|
+
|
|
105
|
+
return useQuery(
|
|
106
|
+
{
|
|
107
|
+
...queryOptions,
|
|
108
|
+
...baseOptions,
|
|
109
|
+
queryFn: userId ? baseOptions.queryFn : skipToken
|
|
110
|
+
},
|
|
111
|
+
queryClient
|
|
112
|
+
)
|
|
113
|
+
}
|