@intlayer/design-system 8.10.1 → 8.11.0
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/esm/api/hooks/ai.mjs +66 -0
- package/dist/esm/api/hooks/ai.mjs.map +1 -0
- package/dist/esm/api/hooks/audit.mjs +34 -0
- package/dist/esm/api/hooks/audit.mjs.map +1 -0
- package/dist/esm/api/hooks/auth.mjs +217 -0
- package/dist/esm/api/hooks/auth.mjs.map +1 -0
- package/dist/esm/api/hooks/bitbucket.mjs +39 -0
- package/dist/esm/api/hooks/bitbucket.mjs.map +1 -0
- package/dist/esm/api/hooks/dictionary.mjs +105 -0
- package/dist/esm/api/hooks/dictionary.mjs.map +1 -0
- package/dist/esm/api/hooks/discussions.mjs +37 -0
- package/dist/esm/api/hooks/discussions.mjs.map +1 -0
- package/dist/esm/api/hooks/editor.mjs +24 -0
- package/dist/esm/api/hooks/editor.mjs.map +1 -0
- package/dist/esm/api/hooks/github.mjs +54 -0
- package/dist/esm/api/hooks/github.mjs.map +1 -0
- package/dist/esm/api/hooks/gitlab.mjs +43 -0
- package/dist/esm/api/hooks/gitlab.mjs.map +1 -0
- package/dist/esm/api/hooks/newsletter.mjs +31 -0
- package/dist/esm/api/hooks/newsletter.mjs.map +1 -0
- package/dist/esm/api/hooks/organization.mjs +123 -0
- package/dist/esm/api/hooks/organization.mjs.map +1 -0
- package/dist/esm/api/hooks/project.mjs +187 -0
- package/dist/esm/api/hooks/project.mjs.map +1 -0
- package/dist/esm/api/hooks/reviewer.mjs +288 -0
- package/dist/esm/api/hooks/reviewer.mjs.map +1 -0
- package/dist/esm/api/hooks/search.mjs +18 -0
- package/dist/esm/api/hooks/search.mjs.map +1 -0
- package/dist/esm/api/hooks/showcaseProject.mjs +95 -0
- package/dist/esm/api/hooks/showcaseProject.mjs.map +1 -0
- package/dist/esm/api/hooks/stripe.mjs +261 -0
- package/dist/esm/api/hooks/stripe.mjs.map +1 -0
- package/dist/esm/api/hooks/tag.mjs +45 -0
- package/dist/esm/api/hooks/tag.mjs.map +1 -0
- package/dist/esm/api/hooks/translate.mjs +47 -0
- package/dist/esm/api/hooks/translate.mjs.map +1 -0
- package/dist/esm/api/hooks/user.mjs +58 -0
- package/dist/esm/api/hooks/user.mjs.map +1 -0
- package/dist/esm/api/hooks/utils.mjs +30 -0
- package/dist/esm/api/hooks/utils.mjs.map +1 -0
- package/dist/esm/api/index.mjs +26 -0
- package/dist/esm/{hooks → api}/useAuth/useAuth.mjs +1 -1
- package/dist/esm/api/useAuth/useAuth.mjs.map +1 -0
- package/dist/esm/{hooks → api}/useAuth/useOAuth2.mjs +3 -3
- package/dist/esm/api/useAuth/useOAuth2.mjs.map +1 -0
- package/dist/esm/{hooks → api}/useAuth/useSession.mjs +3 -4
- package/dist/esm/api/useAuth/useSession.mjs.map +1 -0
- package/dist/esm/api/useIntlayerAPI.mjs +123 -0
- package/dist/esm/api/useIntlayerAPI.mjs.map +1 -0
- package/dist/esm/{hooks → api}/useUser/index.mjs +2 -2
- package/dist/esm/api/useUser/index.mjs.map +1 -0
- package/dist/esm/components/Badge/index.mjs +1 -3
- package/dist/esm/components/Badge/index.mjs.map +1 -1
- package/dist/esm/components/Breadcrumb/index.mjs +0 -1
- package/dist/esm/components/Breadcrumb/index.mjs.map +1 -1
- package/dist/esm/components/Button/Button.mjs +3 -5
- package/dist/esm/components/Button/Button.mjs.map +1 -1
- package/dist/esm/components/Carousel/index.mjs +3 -3
- package/dist/esm/components/Carousel/index.mjs.map +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs +1 -1
- package/dist/esm/components/ContentEditor/ContentEditorTextArea.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs +1 -1
- package/dist/esm/components/DictionaryFieldEditor/ContentEditorView/TextEditor.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs +3 -2
- package/dist/esm/components/DictionaryFieldEditor/DictionaryCreationForm/DictionaryCreationForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs +4 -2
- package/dist/esm/components/DictionaryFieldEditor/DictionaryDetails/DictionaryDetailsForm.mjs.map +1 -1
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs +3 -2
- package/dist/esm/components/DictionaryFieldEditor/SaveForm/SaveForm.mjs.map +1 -1
- package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs +2 -2
- package/dist/esm/components/ExpandCollapse/ExpandCollapse.mjs.map +1 -1
- package/dist/esm/components/IDE/FileList.mjs +1 -1
- package/dist/esm/components/IDE/FileList.mjs.map +1 -1
- package/dist/esm/components/IDE/IDE.mjs +1 -1
- package/dist/esm/components/IDE/IDE.mjs.map +1 -1
- package/dist/esm/components/Input/Checkbox.mjs +1 -3
- package/dist/esm/components/Input/Checkbox.mjs.map +1 -1
- package/dist/esm/components/Label/index.mjs +2 -2
- package/dist/esm/components/Label/index.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/LanguageSection.mjs +8 -6
- package/dist/esm/components/LanguageBackground/LanguageSection.mjs.map +1 -1
- package/dist/esm/components/LanguageBackground/index.mjs +13 -5
- package/dist/esm/components/LanguageBackground/index.mjs.map +1 -1
- package/dist/esm/components/Link/Link.mjs +0 -7
- package/dist/esm/components/Link/Link.mjs.map +1 -1
- package/dist/esm/components/Loader/spinner.mjs +1 -1
- package/dist/esm/components/Loader/spinner.mjs.map +1 -1
- package/dist/esm/components/Pagination/Pagination.mjs +1 -2
- package/dist/esm/components/Pagination/Pagination.mjs.map +1 -1
- package/dist/esm/components/Popover/dynamic.mjs +2 -2
- package/dist/esm/components/Popover/dynamic.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/SwitchSelector.mjs +3 -5
- package/dist/esm/components/SwitchSelector/SwitchSelector.mjs.map +1 -1
- package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs +3 -3
- package/dist/esm/components/SwitchSelector/VerticalSwitchSelector.mjs.map +1 -1
- package/dist/esm/components/TabSelector/TabSelector.mjs +3 -3
- package/dist/esm/components/TabSelector/TabSelector.mjs.map +1 -1
- package/dist/esm/components/Tag/index.mjs +1 -1
- package/dist/esm/components/Tag/index.mjs.map +1 -1
- package/dist/esm/components/Terminal/Terminal.mjs +1 -1
- package/dist/esm/components/Terminal/Terminal.mjs.map +1 -1
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs +2 -2
- package/dist/esm/components/TextArea/AutoSizeTextArea.mjs.map +1 -1
- package/dist/esm/components/TextArea/ContentEditableTextArea.mjs +3 -3
- package/dist/esm/components/TextArea/ContentEditableTextArea.mjs.map +1 -1
- package/dist/esm/components/Toaster/Toast.mjs +3 -3
- package/dist/esm/components/Toaster/Toast.mjs.map +1 -1
- package/dist/esm/components/WithResizer/index.mjs +7 -2
- package/dist/esm/components/WithResizer/index.mjs.map +1 -1
- package/dist/esm/hooks/index.mjs +1 -7
- package/dist/esm/libs/auth.mjs +1 -1
- package/dist/esm/routes.mjs +23 -1
- package/dist/esm/routes.mjs.map +1 -1
- package/dist/types/api/hooks/ai.d.ts +12 -0
- package/dist/types/api/hooks/ai.d.ts.map +1 -0
- package/dist/types/api/hooks/audit.d.ts +10 -0
- package/dist/types/api/hooks/audit.d.ts.map +1 -0
- package/dist/types/api/hooks/auth.d.ts +29 -0
- package/dist/types/api/hooks/auth.d.ts.map +1 -0
- package/dist/types/api/hooks/bitbucket.d.ts +8 -0
- package/dist/types/api/hooks/bitbucket.d.ts.map +1 -0
- package/dist/types/api/hooks/dictionary.d.ts +15 -0
- package/dist/types/api/hooks/dictionary.d.ts.map +1 -0
- package/dist/types/api/hooks/discussions.d.ts +8 -0
- package/dist/types/api/hooks/discussions.d.ts.map +1 -0
- package/dist/types/api/hooks/editor.d.ts +6 -0
- package/dist/types/api/hooks/editor.d.ts.map +1 -0
- package/dist/types/api/hooks/github.d.ts +12 -0
- package/dist/types/api/hooks/github.d.ts.map +1 -0
- package/dist/types/api/hooks/gitlab.d.ts +8 -0
- package/dist/types/api/hooks/gitlab.d.ts.map +1 -0
- package/dist/types/api/hooks/newsletter.d.ts +7 -0
- package/dist/types/api/hooks/newsletter.d.ts.map +1 -0
- package/dist/types/api/hooks/organization.d.ts +16 -0
- package/dist/types/api/hooks/organization.d.ts.map +1 -0
- package/dist/types/api/hooks/project.d.ts +23 -0
- package/dist/types/api/hooks/project.d.ts.map +1 -0
- package/dist/types/api/hooks/reviewer.d.ts +39 -0
- package/dist/types/api/hooks/reviewer.d.ts.map +1 -0
- package/dist/types/api/hooks/search.d.ts +7 -0
- package/dist/types/api/hooks/search.d.ts.map +1 -0
- package/dist/types/api/hooks/showcaseProject.d.ts +16 -0
- package/dist/types/api/hooks/showcaseProject.d.ts.map +1 -0
- package/dist/types/api/hooks/stripe.d.ts +33 -0
- package/dist/types/api/hooks/stripe.d.ts.map +1 -0
- package/dist/types/api/hooks/tag.d.ts +11 -0
- package/dist/types/api/hooks/tag.d.ts.map +1 -0
- package/dist/types/api/hooks/translate.d.ts +8 -0
- package/dist/types/api/hooks/translate.d.ts.map +1 -0
- package/dist/types/api/hooks/user.d.ts +13 -0
- package/dist/types/api/hooks/user.d.ts.map +1 -0
- package/dist/types/api/hooks/utils.d.ts +23 -0
- package/dist/types/api/hooks/utils.d.ts.map +1 -0
- package/dist/types/api/index.d.ts +25 -0
- package/dist/types/{hooks → api}/useAuth/useAuth.d.ts +1 -1
- package/dist/types/api/useAuth/useAuth.d.ts.map +1 -0
- package/dist/types/{hooks → api}/useAuth/useOAuth2.d.ts +1 -1
- package/dist/types/api/useAuth/useOAuth2.d.ts.map +1 -0
- package/dist/types/{hooks → api}/useAuth/useSession.d.ts +1 -1
- package/dist/types/api/useAuth/useSession.d.ts.map +1 -0
- package/dist/types/api/useIntlayerAPI.d.ts +297 -0
- package/dist/types/api/useIntlayerAPI.d.ts.map +1 -0
- package/dist/types/{hooks → api}/useUser/index.d.ts +1 -1
- package/dist/types/api/useUser/index.d.ts.map +1 -0
- package/dist/types/components/Badge/index.d.ts +3 -4
- package/dist/types/components/Badge/index.d.ts.map +1 -1
- package/dist/types/components/Breadcrumb/index.d.ts.map +1 -1
- package/dist/types/components/Button/Button.d.ts +5 -6
- package/dist/types/components/Button/Button.d.ts.map +1 -1
- package/dist/types/components/Carousel/index.d.ts.map +1 -1
- package/dist/types/components/CollapsibleTable/CollapsibleTable.d.ts +1 -1
- package/dist/types/components/Container/index.d.ts +4 -4
- package/dist/types/components/DictionaryFieldEditor/ContentEditorView/TextEditor.d.ts.map +1 -1
- package/dist/types/components/ExpandCollapse/ExpandCollapse.d.ts.map +1 -1
- package/dist/types/components/Input/Checkbox.d.ts +1 -2
- package/dist/types/components/Input/Checkbox.d.ts.map +1 -1
- package/dist/types/components/LanguageBackground/index.d.ts.map +1 -1
- package/dist/types/components/Link/Link.d.ts +2 -3
- package/dist/types/components/Link/Link.d.ts.map +1 -1
- package/dist/types/components/Loader/spinner.d.ts +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts +1 -1
- package/dist/types/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts +2 -3
- package/dist/types/components/SwitchSelector/SwitchSelector.d.ts.map +1 -1
- package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts +1 -1
- package/dist/types/components/SwitchSelector/VerticalSwitchSelector.d.ts.map +1 -1
- package/dist/types/components/TabSelector/TabSelector.d.ts +2 -2
- package/dist/types/components/TabSelector/TabSelector.d.ts.map +1 -1
- package/dist/types/components/Tag/index.d.ts +2 -2
- package/dist/types/components/TextArea/ContentEditableTextArea.d.ts.map +1 -1
- package/dist/types/components/Toaster/Toast.d.ts +1 -1
- package/dist/types/hooks/index.d.ts +1 -7
- package/dist/types/providers/ReactQueryProvider.d.ts +1 -1
- package/dist/types/routes.d.ts +23 -1
- package/dist/types/routes.d.ts.map +1 -1
- package/package.json +35 -30
- package/tailwind.css +0 -19
- package/dist/esm/hooks/reactQuery.mjs +0 -1187
- package/dist/esm/hooks/reactQuery.mjs.map +0 -1
- package/dist/esm/hooks/useAuth/useAuth.mjs.map +0 -1
- package/dist/esm/hooks/useAuth/useOAuth2.mjs.map +0 -1
- package/dist/esm/hooks/useAuth/useSession.mjs.map +0 -1
- package/dist/esm/hooks/useIntlayerAPI.mjs +0 -22
- package/dist/esm/hooks/useIntlayerAPI.mjs.map +0 -1
- package/dist/esm/hooks/useUser/index.mjs.map +0 -1
- package/dist/types/hooks/reactQuery.d.ts +0 -188
- package/dist/types/hooks/reactQuery.d.ts.map +0 -1
- package/dist/types/hooks/useAuth/useAuth.d.ts.map +0 -1
- package/dist/types/hooks/useAuth/useOAuth2.d.ts.map +0 -1
- package/dist/types/hooks/useAuth/useSession.d.ts.map +0 -1
- package/dist/types/hooks/useIntlayerAPI.d.ts +0 -14
- package/dist/types/hooks/useIntlayerAPI.d.ts.map +0 -1
- package/dist/types/hooks/useUser/index.d.ts.map +0 -1
- /package/dist/esm/{hooks → api}/useAuth/index.mjs +0 -0
- /package/dist/types/{hooks → api}/useAuth/index.d.ts +0 -0
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useStripeAPI } from "../useIntlayerAPI.mjs";
|
|
4
|
+
import { useAppQuery } from "./utils.mjs";
|
|
5
|
+
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
|
|
6
|
+
|
|
7
|
+
//#region src/api/hooks/stripe.ts
|
|
8
|
+
const useGetPricing = (body, options) => {
|
|
9
|
+
const stripeAPI = useStripeAPI();
|
|
10
|
+
return useQuery({
|
|
11
|
+
queryKey: ["pricing", body],
|
|
12
|
+
queryFn: ({ signal }) => stripeAPI.getPricing(body, { signal }),
|
|
13
|
+
...options
|
|
14
|
+
});
|
|
15
|
+
};
|
|
16
|
+
const useGetSubscription = (body, options) => {
|
|
17
|
+
const stripeAPI = useStripeAPI();
|
|
18
|
+
return useAppQuery({
|
|
19
|
+
queryKey: ["subscription", body],
|
|
20
|
+
queryFn: ({ signal }) => stripeAPI.getSubscription(body, { signal }),
|
|
21
|
+
requireUser: true,
|
|
22
|
+
requireOrganization: true,
|
|
23
|
+
...options
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const useCancelSubscription = () => {
|
|
27
|
+
const stripeAPI = useStripeAPI();
|
|
28
|
+
return useMutation({
|
|
29
|
+
mutationKey: ["subscription"],
|
|
30
|
+
mutationFn: () => stripeAPI.cancelSubscription(),
|
|
31
|
+
meta: { invalidateQueries: [["session"], ["subscription"]] }
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const useGetInvoices = (options) => {
|
|
35
|
+
const stripeAPI = useStripeAPI();
|
|
36
|
+
return useAppQuery({
|
|
37
|
+
queryKey: ["invoices"],
|
|
38
|
+
queryFn: ({ signal }) => stripeAPI.getInvoices({ signal }),
|
|
39
|
+
requireUser: true,
|
|
40
|
+
requireOrganization: true,
|
|
41
|
+
...options
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
const useGetPaymentMethod = (options) => {
|
|
45
|
+
const stripeAPI = useStripeAPI();
|
|
46
|
+
return useAppQuery({
|
|
47
|
+
queryKey: ["paymentMethod"],
|
|
48
|
+
queryFn: ({ signal }) => stripeAPI.getPaymentMethod({ signal }),
|
|
49
|
+
requireUser: true,
|
|
50
|
+
requireOrganization: true,
|
|
51
|
+
...options
|
|
52
|
+
});
|
|
53
|
+
};
|
|
54
|
+
const useCreatePortalSession = () => {
|
|
55
|
+
const stripeAPI = useStripeAPI();
|
|
56
|
+
return useMutation({
|
|
57
|
+
mutationKey: ["portalSession"],
|
|
58
|
+
mutationFn: () => stripeAPI.createPortalSession()
|
|
59
|
+
});
|
|
60
|
+
};
|
|
61
|
+
const useGetAffiliates = (params, options) => {
|
|
62
|
+
const stripeAPI = useStripeAPI();
|
|
63
|
+
return useAppQuery({
|
|
64
|
+
queryKey: ["affiliates", params],
|
|
65
|
+
queryFn: ({ signal }) => stripeAPI.getAffiliates(params, { signal }),
|
|
66
|
+
requireUser: true,
|
|
67
|
+
...options
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const useGetAffiliateInvitations = (params, options) => {
|
|
71
|
+
const stripeAPI = useStripeAPI();
|
|
72
|
+
return useAppQuery({
|
|
73
|
+
queryKey: ["affiliate-invitations", params],
|
|
74
|
+
queryFn: ({ signal }) => stripeAPI.getAffiliateInvitations(params, { signal }),
|
|
75
|
+
requireUser: true,
|
|
76
|
+
...options
|
|
77
|
+
});
|
|
78
|
+
};
|
|
79
|
+
const useGetAffiliateById = (id, options) => {
|
|
80
|
+
const stripeAPI = useStripeAPI();
|
|
81
|
+
return useAppQuery({
|
|
82
|
+
queryKey: ["affiliates", id],
|
|
83
|
+
queryFn: ({ signal }) => stripeAPI.getAffiliateById({ id }, { signal }),
|
|
84
|
+
requireUser: true,
|
|
85
|
+
enabled: Boolean(id),
|
|
86
|
+
...options
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
const useGetAffiliate = (options) => {
|
|
90
|
+
const stripeAPI = useStripeAPI();
|
|
91
|
+
return useAppQuery({
|
|
92
|
+
queryKey: ["affiliate"],
|
|
93
|
+
queryFn: ({ signal }) => stripeAPI.getAffiliate({ signal }),
|
|
94
|
+
requireUser: true,
|
|
95
|
+
...options
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
const useGetAffiliateAccountSession = (options) => {
|
|
99
|
+
const stripeAPI = useStripeAPI();
|
|
100
|
+
return useAppQuery({
|
|
101
|
+
queryKey: ["affiliate", "account-session"],
|
|
102
|
+
queryFn: () => stripeAPI.getAffiliateAccountSession(),
|
|
103
|
+
requireUser: true,
|
|
104
|
+
...options
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
const useGetAffiliateOnboardingLink = (options) => {
|
|
108
|
+
const stripeAPI = useStripeAPI();
|
|
109
|
+
return useAppQuery({
|
|
110
|
+
queryKey: ["affiliate", "onboarding-link"],
|
|
111
|
+
queryFn: () => stripeAPI.getAffiliateOnboardingLink(),
|
|
112
|
+
requireUser: true,
|
|
113
|
+
...options
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
const useGetAffiliateStats = (options) => {
|
|
117
|
+
const stripeAPI = useStripeAPI();
|
|
118
|
+
return useAppQuery({
|
|
119
|
+
queryKey: ["affiliate", "stats"],
|
|
120
|
+
queryFn: ({ signal }) => stripeAPI.getAffiliateStats({ signal }),
|
|
121
|
+
requireUser: true,
|
|
122
|
+
...options
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
const useGrantAffiliateAccess = () => {
|
|
126
|
+
const stripeAPI = useStripeAPI();
|
|
127
|
+
return useMutation({
|
|
128
|
+
mutationKey: ["affiliate", "grant"],
|
|
129
|
+
mutationFn: (body) => stripeAPI.grantAffiliateAccess(body),
|
|
130
|
+
meta: { invalidateQueries: [["affiliate"]] }
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
const useSendAffiliateInvitation = () => {
|
|
134
|
+
const stripeAPI = useStripeAPI();
|
|
135
|
+
return useMutation({
|
|
136
|
+
mutationKey: [
|
|
137
|
+
"affiliate",
|
|
138
|
+
"invitation",
|
|
139
|
+
"send"
|
|
140
|
+
],
|
|
141
|
+
mutationFn: (body) => stripeAPI.sendAffiliateInvitation(body),
|
|
142
|
+
meta: { invalidateQueries: [["affiliate-invitations"]] }
|
|
143
|
+
});
|
|
144
|
+
};
|
|
145
|
+
const useGetAffiliateInvitation = (token, options) => {
|
|
146
|
+
const stripeAPI = useStripeAPI();
|
|
147
|
+
return useQuery({
|
|
148
|
+
queryKey: [
|
|
149
|
+
"affiliate",
|
|
150
|
+
"invitation",
|
|
151
|
+
token
|
|
152
|
+
],
|
|
153
|
+
queryFn: () => stripeAPI.getAffiliateInvitation({ token }),
|
|
154
|
+
enabled: Boolean(token),
|
|
155
|
+
...options
|
|
156
|
+
});
|
|
157
|
+
};
|
|
158
|
+
const useAcceptAffiliateInvitation = () => {
|
|
159
|
+
const stripeAPI = useStripeAPI();
|
|
160
|
+
const queryClient = useQueryClient();
|
|
161
|
+
return useMutation({
|
|
162
|
+
mutationKey: [
|
|
163
|
+
"affiliate",
|
|
164
|
+
"invitation",
|
|
165
|
+
"accept"
|
|
166
|
+
],
|
|
167
|
+
mutationFn: ({ token, country, stripeAccountType }) => stripeAPI.acceptAffiliateInvitation({
|
|
168
|
+
token,
|
|
169
|
+
country,
|
|
170
|
+
stripeAccountType
|
|
171
|
+
}),
|
|
172
|
+
onSuccess: (_data, { token }) => {
|
|
173
|
+
queryClient.invalidateQueries({ queryKey: [
|
|
174
|
+
"affiliate",
|
|
175
|
+
"invitation",
|
|
176
|
+
token
|
|
177
|
+
] });
|
|
178
|
+
queryClient.invalidateQueries({ queryKey: ["affiliate"] });
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
};
|
|
182
|
+
const useUpdateAffiliateStatus = () => {
|
|
183
|
+
const stripeAPI = useStripeAPI();
|
|
184
|
+
const queryClient = useQueryClient();
|
|
185
|
+
return useMutation({
|
|
186
|
+
mutationKey: ["affiliate", "update"],
|
|
187
|
+
mutationFn: ({ id, status }) => stripeAPI.updateAffiliateStatus({ id }, { status }),
|
|
188
|
+
onSuccess: (_data, { id }) => {
|
|
189
|
+
queryClient.invalidateQueries({ queryKey: ["affiliates", id] });
|
|
190
|
+
queryClient.invalidateQueries({ queryKey: ["affiliates"] });
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
};
|
|
194
|
+
const useGetPromoCodeById = (promoCodeId, options) => {
|
|
195
|
+
const stripeAPI = useStripeAPI();
|
|
196
|
+
return useAppQuery({
|
|
197
|
+
queryKey: ["promo-codes", promoCodeId],
|
|
198
|
+
queryFn: ({ signal }) => stripeAPI.getPromoCodeById(promoCodeId, { signal }),
|
|
199
|
+
enabled: Boolean(promoCodeId),
|
|
200
|
+
requireUser: true,
|
|
201
|
+
...options
|
|
202
|
+
});
|
|
203
|
+
};
|
|
204
|
+
const useGetPromoCodes = (params = {}, options) => {
|
|
205
|
+
const stripeAPI = useStripeAPI();
|
|
206
|
+
return useAppQuery({
|
|
207
|
+
queryKey: ["promo-codes", params.affiliateId ?? "all"],
|
|
208
|
+
queryFn: ({ signal }) => stripeAPI.getPromoCodes(params, { signal }),
|
|
209
|
+
requireUser: true,
|
|
210
|
+
...options
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
const useCreatePromoCode = () => {
|
|
214
|
+
const stripeAPI = useStripeAPI();
|
|
215
|
+
const queryClient = useQueryClient();
|
|
216
|
+
return useMutation({
|
|
217
|
+
mutationKey: ["promo-codes", "create"],
|
|
218
|
+
mutationFn: (body) => stripeAPI.createPromoCode(body),
|
|
219
|
+
onSuccess: () => {
|
|
220
|
+
queryClient.invalidateQueries({ queryKey: ["promo-codes"] });
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
const useUpdatePromoCode = () => {
|
|
225
|
+
const stripeAPI = useStripeAPI();
|
|
226
|
+
const queryClient = useQueryClient();
|
|
227
|
+
return useMutation({
|
|
228
|
+
mutationKey: ["promo-codes", "update"],
|
|
229
|
+
mutationFn: ({ id, ...body }) => stripeAPI.updatePromoCode({
|
|
230
|
+
id,
|
|
231
|
+
...body
|
|
232
|
+
}),
|
|
233
|
+
onSuccess: () => {
|
|
234
|
+
queryClient.invalidateQueries({ queryKey: ["promo-codes"] });
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
};
|
|
238
|
+
const useDeletePromoCode = () => {
|
|
239
|
+
const stripeAPI = useStripeAPI();
|
|
240
|
+
const queryClient = useQueryClient();
|
|
241
|
+
return useMutation({
|
|
242
|
+
mutationKey: ["promo-codes", "delete"],
|
|
243
|
+
mutationFn: ({ id }) => stripeAPI.deletePromoCode({ id }),
|
|
244
|
+
onSuccess: () => {
|
|
245
|
+
queryClient.invalidateQueries({ queryKey: ["promo-codes"] });
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
};
|
|
249
|
+
const useGetAffiliatePromoCode = (referralCode, options) => {
|
|
250
|
+
const stripeAPI = useStripeAPI();
|
|
251
|
+
return useQuery({
|
|
252
|
+
queryKey: ["affiliate-promo-code", referralCode],
|
|
253
|
+
queryFn: () => stripeAPI.getAffiliatePromoCode(referralCode),
|
|
254
|
+
enabled: Boolean(referralCode),
|
|
255
|
+
...options
|
|
256
|
+
});
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
//#endregion
|
|
260
|
+
export { useAcceptAffiliateInvitation, useCancelSubscription, useCreatePortalSession, useCreatePromoCode, useDeletePromoCode, useGetAffiliate, useGetAffiliateAccountSession, useGetAffiliateById, useGetAffiliateInvitation, useGetAffiliateInvitations, useGetAffiliateOnboardingLink, useGetAffiliatePromoCode, useGetAffiliateStats, useGetAffiliates, useGetInvoices, useGetPaymentMethod, useGetPricing, useGetPromoCodeById, useGetPromoCodes, useGetSubscription, useGrantAffiliateAccess, useSendAffiliateInvitation, useUpdateAffiliateStatus, useUpdatePromoCode };
|
|
261
|
+
//# sourceMappingURL=stripe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripe.mjs","names":[],"sources":["../../../../src/api/hooks/stripe.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreatePromoCodeBody,\n GetAffiliatesParams,\n GetCheckoutSessionBody,\n GetPricingBody,\n GetPricingResult,\n GrantAffiliateAccessBody,\n SendAffiliateInvitationBody,\n UpdatePromoCodeBody,\n} from '@intlayer/backend';\nimport {\n type UseQueryOptions,\n useMutation,\n useQuery,\n useQueryClient,\n} from '@tanstack/react-query';\nimport { useStripeAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetPricing = (\n body: GetPricingBody,\n options?: Partial<UseQueryOptions<GetPricingResult>>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['pricing', body],\n queryFn: ({ signal }) => stripeAPI.getPricing(body, { signal }),\n ...options,\n });\n};\n\nexport const useGetSubscription = (\n body: GetCheckoutSessionBody,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['subscription', body],\n queryFn: ({ signal }) => stripeAPI.getSubscription(body, { signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCancelSubscription = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['subscription'],\n mutationFn: () => stripeAPI.cancelSubscription(),\n meta: {\n invalidateQueries: [['session'], ['subscription']],\n },\n });\n};\n\nexport const useGetInvoices = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['invoices'],\n queryFn: ({ signal }) => stripeAPI.getInvoices({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useGetPaymentMethod = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['paymentMethod'],\n queryFn: ({ signal }) => stripeAPI.getPaymentMethod({ signal }),\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useCreatePortalSession = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['portalSession'],\n mutationFn: () => stripeAPI.createPortalSession(),\n });\n};\n\nexport const useGetAffiliates = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', params],\n queryFn: ({ signal }) => stripeAPI.getAffiliates(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateInvitations = (\n params?: GetAffiliatesParams,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate-invitations', params],\n queryFn: ({ signal }) =>\n stripeAPI.getAffiliateInvitations(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateById = (\n id: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliates', id],\n queryFn: ({ signal }) => stripeAPI.getAffiliateById({ id }, { signal }),\n requireUser: true,\n enabled: Boolean(id),\n ...options,\n });\n};\n\nexport const useGetAffiliate = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate'],\n queryFn: ({ signal }) => stripeAPI.getAffiliate({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateAccountSession = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'account-session'],\n queryFn: () => stripeAPI.getAffiliateAccountSession(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateOnboardingLink = (\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'onboarding-link'],\n queryFn: () => stripeAPI.getAffiliateOnboardingLink(),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetAffiliateStats = (options?: Partial<UseQueryOptions>) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['affiliate', 'stats'],\n queryFn: ({ signal }) => stripeAPI.getAffiliateStats({ signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGrantAffiliateAccess = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'grant'],\n mutationFn: (body: GrantAffiliateAccessBody) =>\n stripeAPI.grantAffiliateAccess(body),\n meta: {\n invalidateQueries: [['affiliate']],\n },\n });\n};\n\nexport const useSendAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'send'],\n mutationFn: (body: SendAffiliateInvitationBody) =>\n stripeAPI.sendAffiliateInvitation(body),\n meta: {\n invalidateQueries: [['affiliate-invitations']],\n },\n });\n};\n\nexport const useGetAffiliateInvitation = (\n token: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate', 'invitation', token],\n queryFn: () => stripeAPI.getAffiliateInvitation({ token }),\n enabled: Boolean(token),\n ...options,\n });\n};\n\nexport const useAcceptAffiliateInvitation = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'invitation', 'accept'],\n mutationFn: ({\n token,\n country,\n stripeAccountType,\n }: {\n token: string;\n country?: string;\n stripeAccountType?: 'express' | 'standard';\n }) =>\n stripeAPI.acceptAffiliateInvitation({\n token,\n country,\n stripeAccountType,\n }),\n onSuccess: (_data, { token }) => {\n queryClient.invalidateQueries({\n queryKey: ['affiliate', 'invitation', token],\n });\n queryClient.invalidateQueries({ queryKey: ['affiliate'] });\n },\n });\n};\n\nexport const useUpdateAffiliateStatus = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['affiliate', 'update'],\n mutationFn: ({\n id,\n status,\n }: {\n id: string;\n status?: 'active' | 'suspended';\n }) => stripeAPI.updateAffiliateStatus({ id }, { status }),\n onSuccess: (_data, { id }) => {\n queryClient.invalidateQueries({ queryKey: ['affiliates', id] });\n queryClient.invalidateQueries({ queryKey: ['affiliates'] });\n },\n });\n};\n\nexport const useGetPromoCodeById = (\n promoCodeId?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', promoCodeId],\n queryFn: ({ signal }) =>\n stripeAPI.getPromoCodeById(promoCodeId!, { signal }),\n enabled: Boolean(promoCodeId),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useGetPromoCodes = (\n params: { affiliateId?: string } = {},\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useAppQuery({\n queryKey: ['promo-codes', params.affiliateId ?? 'all'],\n queryFn: ({ signal }) => stripeAPI.getPromoCodes(params, { signal }),\n requireUser: true,\n ...options,\n });\n};\n\nexport const useCreatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'create'],\n mutationFn: (body: CreatePromoCodeBody) => stripeAPI.createPromoCode(body),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useUpdatePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'update'],\n mutationFn: ({ id, ...body }: { id: string } & UpdatePromoCodeBody) =>\n stripeAPI.updatePromoCode({ id, ...body }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useDeletePromoCode = () => {\n const stripeAPI = useStripeAPI();\n const queryClient = useQueryClient();\n\n return useMutation({\n mutationKey: ['promo-codes', 'delete'],\n mutationFn: ({ id }: { id: string }) => stripeAPI.deletePromoCode({ id }),\n onSuccess: () => {\n queryClient.invalidateQueries({ queryKey: ['promo-codes'] });\n },\n });\n};\n\nexport const useGetAffiliatePromoCode = (\n referralCode?: string,\n options?: Partial<UseQueryOptions>\n) => {\n const stripeAPI = useStripeAPI();\n\n return useQuery({\n queryKey: ['affiliate-promo-code', referralCode],\n queryFn: () => stripeAPI.getAffiliatePromoCode(referralCode!),\n enabled: Boolean(referralCode),\n ...options,\n });\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useTagAPI } from "../useIntlayerAPI.mjs";
|
|
4
|
+
import { useAppQuery } from "./utils.mjs";
|
|
5
|
+
import { useMutation } from "@tanstack/react-query";
|
|
6
|
+
|
|
7
|
+
//#region src/api/hooks/tag.ts
|
|
8
|
+
const useGetTags = (filters, options) => {
|
|
9
|
+
const tagAPI = useTagAPI();
|
|
10
|
+
return useAppQuery({
|
|
11
|
+
queryKey: ["tags", filters],
|
|
12
|
+
queryFn: ({ signal }) => tagAPI.getTags(filters, { signal }),
|
|
13
|
+
requireUser: true,
|
|
14
|
+
requireOrganization: true,
|
|
15
|
+
...options
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
const useAddTag = () => {
|
|
19
|
+
const tagAPI = useTagAPI();
|
|
20
|
+
return useMutation({
|
|
21
|
+
mutationKey: ["tags"],
|
|
22
|
+
mutationFn: (args) => tagAPI.addTag(args),
|
|
23
|
+
meta: { invalidateQueries: [["tags"]] }
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
const useUpdateTag = () => {
|
|
27
|
+
const tagAPI = useTagAPI();
|
|
28
|
+
return useMutation({
|
|
29
|
+
mutationKey: ["tags"],
|
|
30
|
+
mutationFn: (v) => tagAPI.updateTag(v.tagId, v.tag),
|
|
31
|
+
meta: { invalidateQueries: [["tags"]] }
|
|
32
|
+
});
|
|
33
|
+
};
|
|
34
|
+
const useDeleteTag = () => {
|
|
35
|
+
const tagAPI = useTagAPI();
|
|
36
|
+
return useMutation({
|
|
37
|
+
mutationKey: ["tags"],
|
|
38
|
+
mutationFn: (args) => tagAPI.deleteTag(args),
|
|
39
|
+
meta: { invalidateQueries: [["tags"]] }
|
|
40
|
+
});
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
//#endregion
|
|
44
|
+
export { useAddTag, useDeleteTag, useGetTags, useUpdateTag };
|
|
45
|
+
//# sourceMappingURL=tag.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tag.mjs","names":[],"sources":["../../../../src/api/hooks/tag.ts"],"sourcesContent":["'use client';\n\nimport type {\n AddTagBody,\n DeleteTagParams,\n GetTagsParams,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useTagAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetTags = (\n filters?: GetTagsParams,\n options?: Partial<UseQueryOptions>\n) => {\n const tagAPI = useTagAPI();\n\n return useAppQuery({\n queryKey: ['tags', filters],\n queryFn: ({ signal }) => tagAPI.getTags(filters, { signal }),\n // placeholderData: keepPreviousData,\n requireUser: true,\n requireOrganization: true,\n ...options,\n });\n};\n\nexport const useAddTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: AddTagBody) => tagAPI.addTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useUpdateTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (v: { tagId: string; tag: any }) =>\n tagAPI.updateTag(v.tagId, v.tag),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n\nexport const useDeleteTag = () => {\n const tagAPI = useTagAPI();\n\n return useMutation({\n mutationKey: ['tags'],\n mutationFn: (args: DeleteTagParams) => tagAPI.deleteTag(args),\n meta: {\n invalidateQueries: [['tags']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,cACX,SACA,YACG;CACH,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,UAAU,CAAC,QAAQ,OAAO;EAC1B,UAAU,EAAE,aAAa,OAAO,QAAQ,SAAS,EAAE,OAAO,CAAC;EAE3D,aAAa;EACb,qBAAqB;EACrB,GAAG;CACL,CAAC;AACH;AAEA,MAAa,kBAAkB;CAC7B,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,SAAqB,OAAO,OAAO,IAAI;EACpD,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH;AAEA,MAAa,qBAAqB;CAChC,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,MACX,OAAO,UAAU,EAAE,OAAO,EAAE,GAAG;EACjC,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH;AAEA,MAAa,qBAAqB;CAChC,MAAM,SAAS,UAAU;CAEzB,OAAO,YAAY;EACjB,aAAa,CAAC,MAAM;EACpB,aAAa,SAA0B,OAAO,UAAU,IAAI;EAC5D,MAAM,EACJ,mBAAmB,CAAC,CAAC,MAAM,CAAC,EAC9B;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useDictionaryAPI, useTranslateAPI } from "../useIntlayerAPI.mjs";
|
|
4
|
+
import { useMutation } from "@tanstack/react-query";
|
|
5
|
+
|
|
6
|
+
//#region src/api/hooks/translate.ts
|
|
7
|
+
const useFillAllTranslations = () => {
|
|
8
|
+
const dictionaryAPI = useDictionaryAPI();
|
|
9
|
+
const translateAPI = useTranslateAPI();
|
|
10
|
+
return useMutation({
|
|
11
|
+
mutationKey: ["fill-all-translations"],
|
|
12
|
+
mutationFn: async (args) => {
|
|
13
|
+
let dictionaryIds = args.dictionaryIds;
|
|
14
|
+
if (!dictionaryIds || dictionaryIds.length === 0) dictionaryIds = ((await dictionaryAPI.getDictionaries({ pageSize: 1e3 }))?.data ?? []).map((d) => d.id);
|
|
15
|
+
return translateAPI.translateDictionaries({
|
|
16
|
+
dictionaryIds,
|
|
17
|
+
targetLocales: args.targetLocales,
|
|
18
|
+
mode: args.mode
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const useStopTranslationJob = () => {
|
|
24
|
+
const translateAPI = useTranslateAPI();
|
|
25
|
+
return useMutation({
|
|
26
|
+
mutationKey: ["stop-translation-job"],
|
|
27
|
+
mutationFn: (jobId) => translateAPI.stopTranslationJob(jobId)
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
const usePauseTranslationJob = () => {
|
|
31
|
+
const translateAPI = useTranslateAPI();
|
|
32
|
+
return useMutation({
|
|
33
|
+
mutationKey: ["pause-translation-job"],
|
|
34
|
+
mutationFn: (jobId) => translateAPI.pauseTranslationJob(jobId)
|
|
35
|
+
});
|
|
36
|
+
};
|
|
37
|
+
const useResumeTranslationJob = () => {
|
|
38
|
+
const translateAPI = useTranslateAPI();
|
|
39
|
+
return useMutation({
|
|
40
|
+
mutationKey: ["resume-translation-job"],
|
|
41
|
+
mutationFn: (jobId) => translateAPI.resumeTranslationJob(jobId)
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
//#endregion
|
|
46
|
+
export { useFillAllTranslations, usePauseTranslationJob, useResumeTranslationJob, useStopTranslationJob };
|
|
47
|
+
//# sourceMappingURL=translate.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate.mjs","names":[],"sources":["../../../../src/api/hooks/translate.ts"],"sourcesContent":["'use client';\n\nimport type { TranslateDictionariesBody } from '@intlayer/backend';\nimport { useMutation } from '@tanstack/react-query';\nimport { useDictionaryAPI, useTranslateAPI } from '../useIntlayerAPI';\n\nexport const useFillAllTranslations = () => {\n const dictionaryAPI = useDictionaryAPI();\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['fill-all-translations'],\n mutationFn: async (\n args: Pick<TranslateDictionariesBody, 'targetLocales' | 'mode'> & {\n dictionaryIds?: string[];\n }\n ) => {\n let dictionaryIds = args.dictionaryIds;\n if (!dictionaryIds || dictionaryIds.length === 0) {\n const result = await dictionaryAPI.getDictionaries({\n pageSize: 1000,\n });\n dictionaryIds = (result?.data ?? []).map((d) => d.id);\n }\n return translateAPI.translateDictionaries({\n dictionaryIds,\n targetLocales: args.targetLocales,\n mode: args.mode,\n });\n },\n });\n};\n\nexport const useStopTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['stop-translation-job'],\n mutationFn: (jobId: string) => translateAPI.stopTranslationJob(jobId),\n });\n};\n\nexport const usePauseTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['pause-translation-job'],\n mutationFn: (jobId: string) => translateAPI.pauseTranslationJob(jobId),\n });\n};\n\nexport const useResumeTranslationJob = () => {\n const translateAPI = useTranslateAPI();\n\n return useMutation({\n mutationKey: ['resume-translation-job'],\n mutationFn: (jobId: string) => translateAPI.resumeTranslationJob(jobId),\n });\n};\n"],"mappings":";;;;;;AAMA,MAAa,+BAA+B;CAC1C,MAAM,gBAAgB,iBAAiB;CACvC,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,uBAAuB;EACrC,YAAY,OACV,SAGG;GACH,IAAI,gBAAgB,KAAK;GACzB,IAAI,CAAC,iBAAiB,cAAc,WAAW,GAI7C,kBAAiB,MAHI,cAAc,gBAAgB,EACjD,UAAU,IACZ,CAAC,IACwB,QAAQ,CAAC,GAAG,KAAK,MAAM,EAAE,EAAE;GAEtD,OAAO,aAAa,sBAAsB;IACxC;IACA,eAAe,KAAK;IACpB,MAAM,KAAK;GACb,CAAC;EACH;CACF,CAAC;AACH;AAEA,MAAa,8BAA8B;CACzC,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,sBAAsB;EACpC,aAAa,UAAkB,aAAa,mBAAmB,KAAK;CACtE,CAAC;AACH;AAEA,MAAa,+BAA+B;CAC1C,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,uBAAuB;EACrC,aAAa,UAAkB,aAAa,oBAAoB,KAAK;CACvE,CAAC;AACH;AAEA,MAAa,gCAAgC;CAC3C,MAAM,eAAe,gBAAgB;CAErC,OAAO,YAAY;EACjB,aAAa,CAAC,wBAAwB;EACtC,aAAa,UAAkB,aAAa,qBAAqB,KAAK;CACxE,CAAC;AACH"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useUserAPI } from "../useIntlayerAPI.mjs";
|
|
4
|
+
import { useAppQuery } from "./utils.mjs";
|
|
5
|
+
import { useMutation } from "@tanstack/react-query";
|
|
6
|
+
|
|
7
|
+
//#region src/api/hooks/user.ts
|
|
8
|
+
const useGetUsers = (filters, options) => {
|
|
9
|
+
const userAPI = useUserAPI();
|
|
10
|
+
return useAppQuery({
|
|
11
|
+
queryKey: ["users", filters],
|
|
12
|
+
queryFn: () => userAPI.getUsers(filters),
|
|
13
|
+
requireUser: true,
|
|
14
|
+
...options
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
const useGetUserById = (userId) => {
|
|
18
|
+
const userAPI = useUserAPI();
|
|
19
|
+
return useAppQuery({
|
|
20
|
+
queryKey: ["users", userId],
|
|
21
|
+
queryFn: () => userAPI.getUserById(userId),
|
|
22
|
+
requireUser: true
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const useCreateUser = () => {
|
|
26
|
+
const userAPI = useUserAPI();
|
|
27
|
+
return useMutation({
|
|
28
|
+
mutationKey: ["users"],
|
|
29
|
+
mutationFn: (args) => userAPI.createUser(args)
|
|
30
|
+
});
|
|
31
|
+
};
|
|
32
|
+
const useUpdateUser = () => {
|
|
33
|
+
const userAPI = useUserAPI();
|
|
34
|
+
return useMutation({
|
|
35
|
+
mutationKey: ["users"],
|
|
36
|
+
mutationFn: (args) => userAPI.updateUser(args)
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
const useDeleteUser = () => {
|
|
40
|
+
const userAPI = useUserAPI();
|
|
41
|
+
return useMutation({
|
|
42
|
+
mutationKey: ["users"],
|
|
43
|
+
mutationFn: (args) => userAPI.deleteUser(args),
|
|
44
|
+
meta: { invalidateQueries: [["users"]] }
|
|
45
|
+
});
|
|
46
|
+
};
|
|
47
|
+
const useUploadUserAvatar = () => {
|
|
48
|
+
const userAPI = useUserAPI();
|
|
49
|
+
return useMutation({
|
|
50
|
+
mutationKey: ["users", "avatar"],
|
|
51
|
+
mutationFn: (file) => userAPI.uploadAvatar(file),
|
|
52
|
+
meta: { invalidateQueries: [["session"]] }
|
|
53
|
+
});
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
//#endregion
|
|
57
|
+
export { useCreateUser, useDeleteUser, useGetUserById, useGetUsers, useUpdateUser, useUploadUserAvatar };
|
|
58
|
+
//# sourceMappingURL=user.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user.mjs","names":[],"sources":["../../../../src/api/hooks/user.ts"],"sourcesContent":["'use client';\n\nimport type {\n CreateUserBody,\n GetUsersParams,\n UpdateUserBody,\n} from '@intlayer/backend';\nimport { type UseQueryOptions, useMutation } from '@tanstack/react-query';\nimport { useUserAPI } from '../useIntlayerAPI';\nimport { useAppQuery } from './utils';\n\nexport const useGetUsers = (\n filters?: GetUsersParams,\n options?: Partial<UseQueryOptions>\n) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', filters],\n queryFn: () => userAPI.getUsers(filters),\n requireUser: true,\n // placeholderData: keepPreviousData,\n ...options,\n });\n};\n\nexport const useGetUserById = (userId: string) => {\n const userAPI = useUserAPI();\n\n return useAppQuery({\n queryKey: ['users', userId],\n queryFn: () => userAPI.getUserById(userId),\n requireUser: true,\n });\n};\n\nexport const useCreateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: CreateUserBody) => userAPI.createUser(args),\n });\n};\n\nexport const useUpdateUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: UpdateUserBody) => userAPI.updateUser(args),\n });\n};\n\nexport const useDeleteUser = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users'],\n mutationFn: (args: string) => userAPI.deleteUser(args),\n meta: {\n invalidateQueries: [['users']],\n },\n });\n};\n\nexport const useUploadUserAvatar = () => {\n const userAPI = useUserAPI();\n\n return useMutation({\n mutationKey: ['users', 'avatar'],\n mutationFn: (file: File) => userAPI.uploadAvatar(file),\n meta: {\n invalidateQueries: [['session']],\n },\n });\n};\n"],"mappings":";;;;;;;AAWA,MAAa,eACX,SACA,YACG;CACH,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,UAAU,CAAC,SAAS,OAAO;EAC3B,eAAe,QAAQ,SAAS,OAAO;EACvC,aAAa;EAEb,GAAG;CACL,CAAC;AACH;AAEA,MAAa,kBAAkB,WAAmB;CAChD,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,UAAU,CAAC,SAAS,MAAM;EAC1B,eAAe,QAAQ,YAAY,MAAM;EACzC,aAAa;CACf,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAyB,QAAQ,WAAW,IAAI;CAC/D,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAyB,QAAQ,WAAW,IAAI;CAC/D,CAAC;AACH;AAEA,MAAa,sBAAsB;CACjC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,OAAO;EACrB,aAAa,SAAiB,QAAQ,WAAW,IAAI;EACrD,MAAM,EACJ,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAC/B;CACF,CAAC;AACH;AAEA,MAAa,4BAA4B;CACvC,MAAM,UAAU,WAAW;CAE3B,OAAO,YAAY;EACjB,aAAa,CAAC,SAAS,QAAQ;EAC/B,aAAa,SAAe,QAAQ,aAAa,IAAI;EACrD,MAAM,EACJ,mBAAmB,CAAC,CAAC,SAAS,CAAC,EACjC;CACF,CAAC;AACH"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { useAuth } from "../useAuth/useAuth.mjs";
|
|
4
|
+
import { useQuery } from "@tanstack/react-query";
|
|
5
|
+
import { useConfiguration } from "@intlayer/editor-react";
|
|
6
|
+
|
|
7
|
+
//#region src/api/hooks/utils.ts
|
|
8
|
+
const useAuthEnable = ({ requireUser, requireProject, requireOrganization }) => {
|
|
9
|
+
const { oAuth2AccessToken, session } = useAuth({ intlayerConfiguration: useConfiguration() });
|
|
10
|
+
const user = session ? session.user : oAuth2AccessToken?.user;
|
|
11
|
+
const organization = session ? session.organization : oAuth2AccessToken?.organization;
|
|
12
|
+
const project = session ? session.project : oAuth2AccessToken?.project;
|
|
13
|
+
return { enable: (requireUser ? Boolean(user) : true) && (requireProject ? Boolean(project) : true) && (requireOrganization ? Boolean(organization) : true) };
|
|
14
|
+
};
|
|
15
|
+
const useAppQuery = (options) => {
|
|
16
|
+
const { requireUser, requireProject, requireOrganization, ...rest } = options;
|
|
17
|
+
const { enable } = useAuthEnable({
|
|
18
|
+
requireUser,
|
|
19
|
+
requireProject,
|
|
20
|
+
requireOrganization
|
|
21
|
+
});
|
|
22
|
+
return useQuery({
|
|
23
|
+
enabled: rest?.enabled === false ? false : enable,
|
|
24
|
+
...rest
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
export { useAppQuery, useAuthEnable };
|
|
30
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","names":[],"sources":["../../../../src/api/hooks/utils.ts"],"sourcesContent":["'use client';\n\nimport { useConfiguration } from '@intlayer/editor-react';\nimport { type UseQueryOptions, useQuery } from '@tanstack/react-query';\nimport { useAuth } from '../useAuth';\n\ntype AuthEnableOptions = {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n};\n\nexport const useAuthEnable = ({\n requireUser,\n requireProject,\n requireOrganization,\n}: AuthEnableOptions) => {\n const configuration = useConfiguration();\n const { oAuth2AccessToken, session } = useAuth({\n intlayerConfiguration: configuration,\n });\n\n const user = session ? session.user : oAuth2AccessToken?.user;\n\n const organization = session\n ? session.organization\n : oAuth2AccessToken?.organization;\n\n const project = session ? session.project : oAuth2AccessToken?.project;\n\n const isUserEnabled = requireUser ? Boolean(user) : true;\n\n const isProjectEnabled = requireProject ? Boolean(project) : true;\n\n const isOrganizationEnabled = requireOrganization\n ? Boolean(organization)\n : true;\n\n const isEnabled = isUserEnabled && isProjectEnabled && isOrganizationEnabled;\n\n return {\n enable: isEnabled,\n };\n};\n\nexport const useAppQuery = (\n options: UseQueryOptions & {\n requireUser?: boolean;\n requireProject?: boolean;\n requireOrganization?: boolean;\n }\n) => {\n const { requireUser, requireProject, requireOrganization, ...rest } = options;\n const { enable } = useAuthEnable({\n requireUser,\n requireProject,\n requireOrganization,\n });\n\n const result = useQuery({\n enabled: rest?.enabled === false ? false : enable,\n ...rest,\n });\n\n return result;\n};\n"],"mappings":";;;;;;;AAYA,MAAa,iBAAiB,EAC5B,aACA,gBACA,0BACuB;CAEvB,MAAM,EAAE,mBAAmB,YAAY,QAAQ,EAC7C,uBAFoB,iBAEe,EACrC,CAAC;CAED,MAAM,OAAO,UAAU,QAAQ,OAAO,mBAAmB;CAEzD,MAAM,eAAe,UACjB,QAAQ,eACR,mBAAmB;CAEvB,MAAM,UAAU,UAAU,QAAQ,UAAU,mBAAmB;CAY/D,OAAO,EACL,SAXoB,cAAc,QAAQ,IAAI,IAAI,UAE3B,iBAAiB,QAAQ,OAAO,IAAI,UAE/B,sBAC1B,QAAQ,YAAY,IACpB,MAMJ;AACF;AAEA,MAAa,eACX,YAKG;CACH,MAAM,EAAE,aAAa,gBAAgB,qBAAqB,GAAG,SAAS;CACtE,MAAM,EAAE,WAAW,cAAc;EAC/B;EACA;EACA;CACF,CAAC;CAOD,OALe,SAAS;EACtB,SAAS,MAAM,YAAY,QAAQ,QAAQ;EAC3C,GAAG;CACL,CAEY;AACd"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useOAuth2 } from "./useAuth/useOAuth2.mjs";
|
|
2
|
+
import { useSession } from "./useAuth/useSession.mjs";
|
|
3
|
+
import { useAuth } from "./useAuth/useAuth.mjs";
|
|
4
|
+
import { useAiAPI, useAuditAPI, useBitbucketAPI, useDictionaryAPI, useEditorAPI, useGithubAPI, useGitlabAPI, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useNewsletterAPI, useOAuthAPI, useOrganizationAPI, useProjectAPI, useReviewerAPI, useSearchAPI, useShowcaseProjectAPI, useStripeAPI, useTagAPI, useTranslateAPI, useUserAPI } from "./useIntlayerAPI.mjs";
|
|
5
|
+
import { useAskDocQuestion, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditTag, useAutocomplete, useChat, useTranslateJSONDeclaration } from "./hooks/ai.mjs";
|
|
6
|
+
import { useAuditScan, useGetRecursiveAuditStatus, useStartRecursiveAudit } from "./hooks/audit.mjs";
|
|
7
|
+
import { useAddPasskey, useAskResetPassword, useChangePassword, useDeletePasskey, useDeleteSSOProvider, useDisableTwoFactor, useEnableTwoFactor, useGetUserByAccount, useGetVerifyEmailStatus, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useRegister, useRegisterSSO, useResetPassword, useSignInMagicLink, useSignInPasskey, useSignInSSO, useUnlinkAccount, useVerifyBackupCode, useVerifyEmail, useVerifyTotp } from "./hooks/auth.mjs";
|
|
8
|
+
import { useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos } from "./hooks/bitbucket.mjs";
|
|
9
|
+
import { useAddDictionary, useDeleteDictionary, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useInfiniteGetDictionaries, usePushDictionaries, useUpdateDictionary } from "./hooks/dictionary.mjs";
|
|
10
|
+
import { useGetDiscussions, useGetDiscussionsData } from "./hooks/discussions.mjs";
|
|
11
|
+
import { useGetEditorDictionaries, useWriteDictionary } from "./hooks/editor.mjs";
|
|
12
|
+
import { useGithubAuth, useGithubCheckConfig, useGithubGetAuthUrl, useGithubGetConfigFile, useGithubRepos, useGithubToken } from "./hooks/github.mjs";
|
|
13
|
+
import { useGitlabAuth, useGitlabCheckConfig, useGitlabGetConfigFile, useGitlabProjects } from "./hooks/gitlab.mjs";
|
|
14
|
+
import { useGetNewsletterStatus, useSubscribeToNewsletter, useUnsubscribeFromNewsletter } from "./hooks/newsletter.mjs";
|
|
15
|
+
import { useAddOrganization, useAddOrganizationMember, useDeleteOrganization, useDeleteOrganizationById, useGetOrganizations, useSelectOrganization, useUnselectOrganization, useUpdateOrganization, useUpdateOrganizationMembers, useUpdateOrganizationMembersById } from "./hooks/organization.mjs";
|
|
16
|
+
import { useAddNewAccessKey, useAddProject, useDeleteAccessKey, useDeleteProject, useDeleteProjectById, useGetCIConfig, useGetProjects, usePushCIConfig, usePushProjectConfiguration, useRefreshAccessKey, useSelectProject, useTriggerBuild, useTriggerWebhook, useUnselectProject, useUpdateProject, useUpdateProjectMembers } from "./hooks/project.mjs";
|
|
17
|
+
import { useContactReviewer, useCreateMission, useDeleteReviewerProfile, useEstimateMission, useGetAdminReviewers, useGetChatHistory, useGetMissionById, useGetMyMissions, useGetMyReviewerProfile, useGetReviewerById, useGetReviewerMarketplace, useGetReviewerPriceDistribution, useGetReviewerReviews, useRegisterAsReviewer, useSendReviewerMessage, useSubmitReview, useUpdateMissionStatus, useUpdateReviewerProfile, useUploadReviewerCoverPicture, useUploadReviewerMainPicture, useValidateReviewerProfile } from "./hooks/reviewer.mjs";
|
|
18
|
+
import { useSearchDoc } from "./hooks/search.mjs";
|
|
19
|
+
import { useDeleteShowcaseProject, useGetOtherShowcaseProjects, useGetShowcaseProjectById, useGetShowcaseProjects, useSubmitShowcaseProject, useToggleShowcaseDownvote, useToggleShowcaseUpvote, useUpdateShowcaseProject } from "./hooks/showcaseProject.mjs";
|
|
20
|
+
import { useAcceptAffiliateInvitation, useCancelSubscription, useCreatePortalSession, useCreatePromoCode, useDeletePromoCode, useGetAffiliate, useGetAffiliateAccountSession, useGetAffiliateById, useGetAffiliateInvitation, useGetAffiliateInvitations, useGetAffiliateOnboardingLink, useGetAffiliatePromoCode, useGetAffiliateStats, useGetAffiliates, useGetInvoices, useGetPaymentMethod, useGetPricing, useGetPromoCodeById, useGetPromoCodes, useGetSubscription, useGrantAffiliateAccess, useSendAffiliateInvitation, useUpdateAffiliateStatus, useUpdatePromoCode } from "./hooks/stripe.mjs";
|
|
21
|
+
import { useAddTag, useDeleteTag, useGetTags, useUpdateTag } from "./hooks/tag.mjs";
|
|
22
|
+
import { useFillAllTranslations, usePauseTranslationJob, useResumeTranslationJob, useStopTranslationJob } from "./hooks/translate.mjs";
|
|
23
|
+
import { useCreateUser, useDeleteUser, useGetUserById, useGetUsers, useUpdateUser, useUploadUserAvatar } from "./hooks/user.mjs";
|
|
24
|
+
import { useUser } from "./useUser/index.mjs";
|
|
25
|
+
|
|
26
|
+
export { useAcceptAffiliateInvitation, useAddDictionary, useAddNewAccessKey, useAddOrganization, useAddOrganizationMember, useAddPasskey, useAddProject, useAddTag, useAiAPI, useAskDocQuestion, useAskResetPassword, useAuditAPI, useAuditContentDeclaration, useAuditContentDeclarationField, useAuditContentDeclarationMetadata, useAuditScan, useAuditTag, useAuth, useAutocomplete, useBitbucketAPI, useBitbucketAuth, useBitbucketCheckConfig, useBitbucketGetConfigFile, useBitbucketRepos, useCancelSubscription, useChangePassword, useChat, useContactReviewer, useCreateMission, useCreatePortalSession, useCreatePromoCode, useCreateUser, useDeleteAccessKey, useDeleteDictionary, useDeleteOrganization, useDeleteOrganizationById, useDeletePasskey, useDeleteProject, useDeleteProjectById, useDeletePromoCode, useDeleteReviewerProfile, useDeleteSSOProvider, useDeleteShowcaseProject, useDeleteTag, useDeleteUser, useDictionaryAPI, useDisableTwoFactor, useEditorAPI, useEnableTwoFactor, useEstimateMission, useFillAllTranslations, useGetAdminReviewers, useGetAffiliate, useGetAffiliateAccountSession, useGetAffiliateById, useGetAffiliateInvitation, useGetAffiliateInvitations, useGetAffiliateOnboardingLink, useGetAffiliatePromoCode, useGetAffiliateStats, useGetAffiliates, useGetCIConfig, useGetChatHistory, useGetDictionaries, useGetDictionariesKeys, useGetDictionary, useGetDiscussions, useGetDiscussionsData, useGetEditorDictionaries, useGetInvoices, useGetMissionById, useGetMyMissions, useGetMyReviewerProfile, useGetNewsletterStatus, useGetOrganizations, useGetOtherShowcaseProjects, useGetPaymentMethod, useGetPricing, useGetProjects, useGetPromoCodeById, useGetPromoCodes, useGetRecursiveAuditStatus, useGetReviewerById, useGetReviewerMarketplace, useGetReviewerPriceDistribution, useGetReviewerReviews, useGetShowcaseProjectById, useGetShowcaseProjects, useGetSubscription, useGetTags, useGetUserByAccount, useGetUserById, useGetUsers, useGetVerifyEmailStatus, useGithubAPI, useGithubAuth, useGithubCheckConfig, useGithubGetAuthUrl, useGithubGetConfigFile, useGithubRepos, useGithubToken, useGitlabAPI, useGitlabAuth, useGitlabCheckConfig, useGitlabGetConfigFile, useGitlabProjects, useGrantAffiliateAccess, useInfiniteGetDictionaries, useIntlayerAuth, useIntlayerOAuth, useIntlayerOAuthOptions, useLinkSocial, useListAccounts, useListPasskeys, useListSSOProviders, useLogin, useLogout, useNewsletterAPI, useOAuth2, useOAuthAPI, useOrganizationAPI, usePauseTranslationJob, useProjectAPI, usePushCIConfig, usePushDictionaries, usePushProjectConfiguration, useRefreshAccessKey, useRegister, useRegisterAsReviewer, useRegisterSSO, useResetPassword, useResumeTranslationJob, useReviewerAPI, useSearchAPI, useSearchDoc, useSelectOrganization, useSelectProject, useSendAffiliateInvitation, useSendReviewerMessage, useSession, useShowcaseProjectAPI, useSignInMagicLink, useSignInPasskey, useSignInSSO, useStartRecursiveAudit, useStopTranslationJob, useStripeAPI, useSubmitReview, useSubmitShowcaseProject, useSubscribeToNewsletter, useTagAPI, useToggleShowcaseDownvote, useToggleShowcaseUpvote, useTranslateAPI, useTranslateJSONDeclaration, useTriggerBuild, useTriggerWebhook, useUnlinkAccount, useUnselectOrganization, useUnselectProject, useUnsubscribeFromNewsletter, useUpdateAffiliateStatus, useUpdateDictionary, useUpdateMissionStatus, useUpdateOrganization, useUpdateOrganizationMembers, useUpdateOrganizationMembersById, useUpdateProject, useUpdateProjectMembers, useUpdatePromoCode, useUpdateReviewerProfile, useUpdateShowcaseProject, useUpdateTag, useUpdateUser, useUploadReviewerCoverPicture, useUploadReviewerMainPicture, useUploadUserAvatar, useUser, useUserAPI, useValidateReviewerProfile, useVerifyBackupCode, useVerifyEmail, useVerifyTotp, useWriteDictionary };
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import { useOAuth2 } from "./useOAuth2.mjs";
|
|
4
4
|
import { useSession } from "./useSession.mjs";
|
|
5
5
|
|
|
6
|
-
//#region src/
|
|
6
|
+
//#region src/api/useAuth/useAuth.ts
|
|
7
7
|
const useAuth = ({ session: sessionProp, intlayerConfiguration } = {}) => {
|
|
8
8
|
const { session, fetchSession, revalidateSession, setSession } = useSession(sessionProp, intlayerConfiguration);
|
|
9
9
|
const { oAuth2AccessToken } = useOAuth2(intlayerConfiguration);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuth.mjs","names":[],"sources":["../../../../src/api/useAuth/useAuth.ts"],"sourcesContent":["'use client';\n\nimport type { OAuth2Token, SessionAPI } from '@intlayer/backend';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useOAuth2 } from './useOAuth2';\nimport { useSession } from './useSession';\n\ntype SessionContextProps = {\n session: SessionAPI | null | undefined;\n setSession: (session: SessionAPI | null) => void;\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n isAuthenticated: boolean;\n oAuth2AccessToken: OAuth2Token | null | undefined;\n};\n\nexport const useAuth = ({\n session: sessionProp,\n intlayerConfiguration,\n}: {\n session?: SessionAPI | null;\n intlayerConfiguration?: IntlayerConfig;\n} = {}): SessionContextProps => {\n const { session, fetchSession, revalidateSession, setSession } = useSession(\n sessionProp,\n intlayerConfiguration\n );\n const { oAuth2AccessToken } = useOAuth2(intlayerConfiguration);\n\n return {\n session,\n fetchSession,\n setSession,\n revalidateSession,\n oAuth2AccessToken,\n isAuthenticated: Boolean(session?.user || oAuth2AccessToken),\n };\n};\n"],"mappings":";;;;;;AAgBA,MAAa,WAAW,EACtB,SAAS,aACT,0BAIE,CAAC,MAA2B;CAC9B,MAAM,EAAE,SAAS,cAAc,mBAAmB,eAAe,WAC/D,aACA,qBACF;CACA,MAAM,EAAE,sBAAsB,UAAU,qBAAqB;CAE7D,OAAO;EACL;EACA;EACA;EACA;EACA;EACA,iBAAiB,QAAQ,SAAS,QAAQ,iBAAiB;CAC7D;AACF"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { useQuery } from "@tanstack/react-query";
|
|
4
|
-
import { useConfiguration } from "@intlayer/editor-react";
|
|
5
|
-
import { getOAuthAPI } from "@intlayer/api";
|
|
6
4
|
import configuration from "@intlayer/config/built";
|
|
5
|
+
import { getOAuthAPI } from "@intlayer/api";
|
|
6
|
+
import { useConfiguration } from "@intlayer/editor-react";
|
|
7
7
|
import { defu } from "defu";
|
|
8
8
|
|
|
9
|
-
//#region src/
|
|
9
|
+
//#region src/api/useAuth/useOAuth2.ts
|
|
10
10
|
const useOAuth2 = (intlayerConfiguration) => {
|
|
11
11
|
const config = defu(intlayerConfiguration, useConfiguration(), configuration);
|
|
12
12
|
const { data } = useQuery({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOAuth2.mjs","names":["defaultConfiguration"],"sources":["../../../../src/api/useAuth/useOAuth2.ts"],"sourcesContent":["'use client';\n\nimport { getOAuthAPI } from '@intlayer/api';\nimport { default as defaultConfiguration } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery } from '@tanstack/react-query';\nimport { defu } from 'defu';\n\nexport const useOAuth2 = (intlayerConfiguration?: IntlayerConfig) => {\n const configuration = useConfiguration();\n const config = defu(\n intlayerConfiguration,\n configuration,\n defaultConfiguration\n );\n\n const intlayerAPI = getOAuthAPI(config);\n\n const { data } = useQuery({\n queryKey: ['oAuth2AccessToken'],\n queryFn: intlayerAPI.getOAuth2AccessToken,\n enabled: !!(config.editor.clientId && config.editor.clientSecret),\n staleTime: 0,\n gcTime: 0,\n refetchOnWindowFocus: false,\n refetchOnMount: false,\n refetchOnReconnect: false,\n refetchInterval: false,\n refetchIntervalInBackground: false,\n });\n\n const oAuth2AccessToken = data?.data;\n\n return {\n oAuth2AccessToken,\n };\n};\n"],"mappings":";;;;;;;;;AASA,MAAa,aAAa,0BAA2C;CAEnE,MAAM,SAAS,KACb,uBAFoB,iBAGR,GACZA,aACF;CAIA,MAAM,EAAE,SAAS,SAAS;EACxB,UAAU,CAAC,mBAAmB;EAC9B,SAJkB,YAAY,MAIX,EAAE;EACrB,SAAS,CAAC,EAAE,OAAO,OAAO,YAAY,OAAO,OAAO;EACpD,WAAW;EACX,QAAQ;EACR,sBAAsB;EACtB,gBAAgB;EAChB,oBAAoB;EACpB,iBAAiB;EACjB,6BAA6B;CAC/B,CAAC;CAID,OAAO,EACL,mBAHwB,MAAM,KAIhC;AACF"}
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
3
|
import { getAuthAPI } from "../../libs/auth.mjs";
|
|
4
|
-
import { useQueryClient } from "
|
|
5
|
-
import { useQuery } from "@tanstack/react-query";
|
|
6
|
-
import { useConfiguration } from "@intlayer/editor-react";
|
|
4
|
+
import { useQuery, useQueryClient } from "@tanstack/react-query";
|
|
7
5
|
import configuration from "@intlayer/config/built";
|
|
6
|
+
import { useConfiguration } from "@intlayer/editor-react";
|
|
8
7
|
|
|
9
|
-
//#region src/
|
|
8
|
+
//#region src/api/useAuth/useSession.ts
|
|
10
9
|
const useSession = (sessionProp, intlayerConfiguration) => {
|
|
11
10
|
const configuration$1 = useConfiguration();
|
|
12
11
|
const config = intlayerConfiguration ?? configuration$1 ?? configuration;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSession.mjs","names":["configuration","defaultConfiguration"],"sources":["../../../../src/api/useAuth/useSession.ts"],"sourcesContent":["'use client';\n\nimport type { SessionAPI } from '@intlayer/backend';\nimport { default as defaultConfiguration } from '@intlayer/config/built';\nimport { useConfiguration } from '@intlayer/editor-react';\nimport type { IntlayerConfig } from '@intlayer/types/config';\nimport { useQuery, useQueryClient } from '@tanstack/react-query';\nimport { getAuthAPI } from '../../libs/auth';\n\nexport type UseSessionResult = {\n /** The current session: `undefined` while loading, `null` if fetched and no session, otherwise the session. */\n session: SessionAPI | null | undefined;\n /** Refetches the session and returns it (undefined while loading). */\n fetchSession: () => Promise<SessionAPI | null | undefined>;\n /** Alias of `fetchSession` for ergonomics. */\n revalidateSession: () => Promise<SessionAPI | null | undefined>;\n /** Manually set the session cache. */\n setSession: (nextSession: SessionAPI | null) => void;\n};\n\nexport const useSession = (\n sessionProp?: SessionAPI | null,\n intlayerConfiguration?: IntlayerConfig\n): UseSessionResult => {\n const configuration = useConfiguration();\n const config = (intlayerConfiguration ??\n configuration ??\n defaultConfiguration) as IntlayerConfig;\n\n const queryClient = useQueryClient();\n\n // Keep TanStack generics internal so they don't leak into the d.ts\n const { data, isFetched, refetch } = useQuery({\n queryKey: ['session'],\n queryFn: async () => {\n const intlayerAPI = getAuthAPI(config);\n const result = await intlayerAPI.getSession();\n // Narrow to the public shape we want to expose\n return result.data as unknown as SessionAPI;\n },\n // Session data rarely changes during navigation, so keep it fresh for 5 minutes\n // This prevents unnecessary refetches when navigating between pages\n staleTime: 5 * 60 * 1000,\n gcTime: 30 * 60 * 1000,\n // Periodically revalidate so the backend's sliding session-refresh\n // (better-auth `updateAge`) keeps the cookie alive for active users.\n refetchInterval: 10 * 60 * 1000,\n refetchIntervalInBackground: false,\n refetchOnMount: true,\n // Refetching on focus/reconnect lets a returning user get a fresh,\n // extended session without a manual reload.\n refetchOnWindowFocus: true,\n refetchOnReconnect: true,\n enabled: !sessionProp,\n });\n\n const session = data ?? (isFetched ? null : undefined);\n\n const setSession = (nextSession: SessionAPI | null) => {\n queryClient.setQueryData(['session'], nextSession);\n };\n\n const fetchSession = async (): Promise<SessionAPI | null | undefined> => {\n const res = await refetch();\n return res.data as SessionAPI | null | undefined;\n };\n\n const revalidateSession = fetchSession;\n\n return {\n session,\n fetchSession,\n revalidateSession,\n setSession,\n };\n};\n"],"mappings":";;;;;;;;AAoBA,MAAa,cACX,aACA,0BACqB;CACrB,MAAMA,kBAAgB,iBAAiB;CACvC,MAAM,SAAU,yBACdA,mBACAC;CAEF,MAAM,cAAc,eAAe;CAGnC,MAAM,EAAE,MAAM,WAAW,YAAY,SAAS;EAC5C,UAAU,CAAC,SAAS;EACpB,SAAS,YAAY;GAInB,QAAO,MAHa,WAAW,MACA,EAAE,WAAW,GAE9B;EAChB;EAGA,WAAW,MAAS;EACpB,QAAQ,OAAU;EAGlB,iBAAiB,MAAU;EAC3B,6BAA6B;EAC7B,gBAAgB;EAGhB,sBAAsB;EACtB,oBAAoB;EACpB,SAAS,CAAC;CACZ,CAAC;CAED,MAAM,UAAU,SAAS,YAAY,OAAO;CAE5C,MAAM,cAAc,gBAAmC;EACrD,YAAY,aAAa,CAAC,SAAS,GAAG,WAAW;CACnD;CAEA,MAAM,eAAe,YAAoD;EAEvE,QAAO,MADW,QAAQ,GACf;CACb;CAIA,OAAO;EACL;EACA;EACA;EACA;CACF;AACF"}
|