@smartbills/react-hooks-sdk 0.0.2-alpha.44 → 0.0.2-alpha.46
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/@types/index.d.ts +1447 -0
- package/dist/@types/index.d.ts.map +1 -0
- package/dist/cjs/apis/SBApiKeys.cjs +56 -0
- package/dist/cjs/apis/SBApiKeys.cjs.map +1 -0
- package/dist/cjs/apis/api-logs/LogsAPI.cjs +42 -0
- package/dist/cjs/apis/api-logs/LogsAPI.cjs.map +1 -0
- package/dist/cjs/apis/attachments/AttachmentsAPI.cjs +147 -0
- package/dist/cjs/apis/attachments/AttachmentsAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs +88 -0
- package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs +58 -0
- package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs +57 -0
- package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/BusinessAPI.cjs +172 -0
- package/dist/cjs/apis/business/BusinessAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerAPI.cjs +161 -0
- package/dist/cjs/apis/business/customers/CustomerAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs +71 -0
- package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs +176 -0
- package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/departments/DepartmentApi.cjs +168 -0
- package/dist/cjs/apis/business/departments/DepartmentApi.cjs.map +1 -0
- package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs +137 -0
- package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/fees/FeesAPI.cjs +167 -0
- package/dist/cjs/apis/business/fees/FeesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/locations/LocationsAPI.cjs +133 -0
- package/dist/cjs/apis/business/locations/LocationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/ProductsAPI.cjs +184 -0
- package/dist/cjs/apis/business/products/ProductsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs +195 -0
- package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs +169 -0
- package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs +183 -0
- package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs +185 -0
- package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs +139 -0
- package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs +143 -0
- package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/tables/TablesAPI.cjs +75 -0
- package/dist/cjs/apis/business/tables/TablesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/taxes/TaxesAPI.cjs +140 -0
- package/dist/cjs/apis/business/taxes/TaxesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs +161 -0
- package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/team/TeamMembersAPI.cjs +93 -0
- package/dist/cjs/apis/business/team/TeamMembersAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/vendors/VendorsAPI.cjs +237 -0
- package/dist/cjs/apis/business/vendors/VendorsAPI.cjs.map +1 -0
- package/dist/cjs/apis/documents/DocumentsAPI.cjs +87 -0
- package/dist/cjs/apis/documents/DocumentsAPI.cjs.map +1 -0
- package/dist/cjs/apis/expenses/ExpensesAPI.cjs +62 -0
- package/dist/cjs/apis/expenses/ExpensesAPI.cjs.map +1 -0
- package/dist/cjs/apis/friends/FriendsAPI.cjs +150 -0
- package/dist/cjs/apis/friends/FriendsAPI.cjs.map +1 -0
- package/dist/cjs/apis/integrations/IntegrationsAPI.cjs +55 -0
- package/dist/cjs/apis/integrations/IntegrationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/invoices/InvoicesAPI.cjs +168 -0
- package/dist/cjs/apis/invoices/InvoicesAPI.cjs.map +1 -0
- package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs +484 -0
- package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs.map +1 -0
- package/dist/cjs/apis/notifications/NotificationAPI.cjs +103 -0
- package/dist/cjs/apis/notifications/NotificationAPI.cjs.map +1 -0
- package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs +125 -0
- package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs.map +1 -0
- package/dist/cjs/apis/receipts/ReceiptAPI.cjs +135 -0
- package/dist/cjs/apis/receipts/ReceiptAPI.cjs.map +1 -0
- package/dist/cjs/apis/user/UserAPI.cjs +130 -0
- package/dist/cjs/apis/user/UserAPI.cjs.map +1 -0
- package/dist/cjs/apis/vendors/VendorsAPI.cjs +215 -0
- package/dist/cjs/apis/vendors/VendorsAPI.cjs.map +1 -0
- package/dist/cjs/context/ApiContext.cjs +94 -0
- package/dist/cjs/context/ApiContext.cjs.map +1 -0
- package/dist/cjs/index.cjs +224 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/apis/SBApiKeys.mjs +56 -0
- package/dist/esm/apis/SBApiKeys.mjs.map +1 -0
- package/dist/esm/apis/api-logs/LogsAPI.mjs +39 -0
- package/dist/esm/apis/api-logs/LogsAPI.mjs.map +1 -0
- package/dist/esm/apis/attachments/AttachmentsAPI.mjs +142 -0
- package/dist/esm/apis/attachments/AttachmentsAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs +84 -0
- package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs +55 -0
- package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs +54 -0
- package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs.map +1 -0
- package/dist/esm/apis/business/BusinessAPI.mjs +165 -0
- package/dist/esm/apis/business/BusinessAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerAPI.mjs +155 -0
- package/dist/esm/apis/business/customers/CustomerAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs +68 -0
- package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs +170 -0
- package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/departments/DepartmentApi.mjs +161 -0
- package/dist/esm/apis/business/departments/DepartmentApi.mjs.map +1 -0
- package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs +132 -0
- package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/fees/FeesAPI.mjs +161 -0
- package/dist/esm/apis/business/fees/FeesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/locations/LocationsAPI.mjs +127 -0
- package/dist/esm/apis/business/locations/LocationsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/ProductsAPI.mjs +177 -0
- package/dist/esm/apis/business/products/ProductsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs +188 -0
- package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs +163 -0
- package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs +177 -0
- package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs +179 -0
- package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs +133 -0
- package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/reviews/ReviewsAPI.mjs +137 -0
- package/dist/esm/apis/business/reviews/ReviewsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/tables/TablesAPI.mjs +70 -0
- package/dist/esm/apis/business/tables/TablesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/taxes/TaxesAPI.mjs +134 -0
- package/dist/esm/apis/business/taxes/TaxesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs +153 -0
- package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/team/TeamMembersAPI.mjs +88 -0
- package/dist/esm/apis/business/team/TeamMembersAPI.mjs.map +1 -0
- package/dist/esm/apis/business/vendors/VendorsAPI.mjs +228 -0
- package/dist/esm/apis/business/vendors/VendorsAPI.mjs.map +1 -0
- package/dist/esm/apis/documents/DocumentsAPI.mjs +82 -0
- package/dist/esm/apis/documents/DocumentsAPI.mjs.map +1 -0
- package/dist/esm/apis/expenses/ExpensesAPI.mjs +58 -0
- package/dist/esm/apis/expenses/ExpensesAPI.mjs.map +1 -0
- package/dist/esm/apis/friends/FriendsAPI.mjs +144 -0
- package/dist/esm/apis/friends/FriendsAPI.mjs.map +1 -0
- package/dist/esm/apis/integrations/IntegrationsAPI.mjs +52 -0
- package/dist/esm/apis/integrations/IntegrationsAPI.mjs.map +1 -0
- package/dist/esm/apis/invoices/InvoicesAPI.mjs +161 -0
- package/dist/esm/apis/invoices/InvoicesAPI.mjs.map +1 -0
- package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs +482 -0
- package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs.map +1 -0
- package/dist/esm/apis/notifications/NotificationAPI.mjs +98 -0
- package/dist/esm/apis/notifications/NotificationAPI.mjs.map +1 -0
- package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs +117 -0
- package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs.map +1 -0
- package/dist/esm/apis/receipts/ReceiptAPI.mjs +129 -0
- package/dist/esm/apis/receipts/ReceiptAPI.mjs.map +1 -0
- package/dist/esm/apis/user/UserAPI.mjs +123 -0
- package/dist/esm/apis/user/UserAPI.mjs.map +1 -0
- package/dist/esm/apis/vendors/VendorsAPI.mjs +204 -0
- package/dist/esm/apis/vendors/VendorsAPI.mjs.map +1 -0
- package/dist/esm/context/ApiContext.mjs +86 -0
- package/dist/esm/context/ApiContext.mjs.map +1 -0
- package/dist/esm/index.mjs +39 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/umd/index.js +5099 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { useApiClient, useBusinessId } from '../../../context/ApiContext.mjs';
|
|
2
|
+
import { useQueryClient, useInfiniteQuery, useQuery, useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { SBApiKeys } from '../../SBApiKeys.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook to list fees with infinite scrolling
|
|
7
|
+
* @param request - The list request parameters
|
|
8
|
+
* @param options - Optional request options
|
|
9
|
+
* @param config - Optional axios request config
|
|
10
|
+
* @returns Infinite query result containing paginated fee data
|
|
11
|
+
*/
|
|
12
|
+
function useListFeesInfiniteQuery(request = {
|
|
13
|
+
page: 1,
|
|
14
|
+
pageSize: 25
|
|
15
|
+
}, options, config) {
|
|
16
|
+
const client = useApiClient();
|
|
17
|
+
useQueryClient();
|
|
18
|
+
const businessId = useBusinessId();
|
|
19
|
+
if (!businessId) {
|
|
20
|
+
throw new Error("businessId is required for fee operations");
|
|
21
|
+
}
|
|
22
|
+
return useInfiniteQuery({
|
|
23
|
+
initialPageParam: request.page || 1,
|
|
24
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees, request, options],
|
|
25
|
+
queryFn: async ({
|
|
26
|
+
pageParam = 1
|
|
27
|
+
}) => {
|
|
28
|
+
return await client.businesses.fees.listAsync(businessId, {
|
|
29
|
+
...request,
|
|
30
|
+
page: pageParam
|
|
31
|
+
}, options, config);
|
|
32
|
+
},
|
|
33
|
+
getNextPageParam: lastPage => {
|
|
34
|
+
if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
|
|
35
|
+
return lastPage.pagination.currentPage + 1;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
},
|
|
39
|
+
enabled: !!businessId
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Hook to get a fee by ID
|
|
44
|
+
* @param feeId - The ID of the fee to retrieve
|
|
45
|
+
* @param options - Optional request options
|
|
46
|
+
* @param config - Optional axios request config
|
|
47
|
+
* @returns Query result containing the fee data
|
|
48
|
+
*/
|
|
49
|
+
function useGetFeeByIdQuery(feeId, options, config) {
|
|
50
|
+
const client = useApiClient();
|
|
51
|
+
useQueryClient();
|
|
52
|
+
const businessId = useBusinessId();
|
|
53
|
+
if (!businessId) {
|
|
54
|
+
throw new Error("businessId is required for fee operations");
|
|
55
|
+
}
|
|
56
|
+
return useQuery({
|
|
57
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees, feeId, options],
|
|
58
|
+
queryFn: async () => {
|
|
59
|
+
return await client.businesses.fees.getByIdAsync(businessId, feeId, options, config);
|
|
60
|
+
},
|
|
61
|
+
enabled: !!businessId
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Hook to create a new fee
|
|
66
|
+
* @returns Mutation function for creating fees
|
|
67
|
+
*/
|
|
68
|
+
function useCreateFeeMutation() {
|
|
69
|
+
const client = useApiClient();
|
|
70
|
+
const queryClient = useQueryClient();
|
|
71
|
+
const businessId = useBusinessId();
|
|
72
|
+
return useMutation({
|
|
73
|
+
mutationFn: async ({
|
|
74
|
+
data,
|
|
75
|
+
options,
|
|
76
|
+
config
|
|
77
|
+
}) => {
|
|
78
|
+
if (!businessId) {
|
|
79
|
+
throw new Error("businessId is required for fee operations");
|
|
80
|
+
}
|
|
81
|
+
return await client.businesses.fees.createAsync(businessId, data, options, config);
|
|
82
|
+
},
|
|
83
|
+
onSuccess: () => {
|
|
84
|
+
if (businessId) {
|
|
85
|
+
queryClient.invalidateQueries({
|
|
86
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees]
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Hook to update an existing fee
|
|
94
|
+
* @returns Mutation function for updating fees
|
|
95
|
+
*/
|
|
96
|
+
function useUpdateFeeMutation() {
|
|
97
|
+
const client = useApiClient();
|
|
98
|
+
const queryClient = useQueryClient();
|
|
99
|
+
const businessId = useBusinessId();
|
|
100
|
+
return useMutation({
|
|
101
|
+
mutationFn: async ({
|
|
102
|
+
feeId,
|
|
103
|
+
data,
|
|
104
|
+
options,
|
|
105
|
+
config
|
|
106
|
+
}) => {
|
|
107
|
+
if (!businessId) {
|
|
108
|
+
throw new Error("businessId is required for fee operations");
|
|
109
|
+
}
|
|
110
|
+
return await client.businesses.fees.updateAsync(businessId, feeId, data, options, config);
|
|
111
|
+
},
|
|
112
|
+
onSuccess: (_, {
|
|
113
|
+
feeId
|
|
114
|
+
}) => {
|
|
115
|
+
if (businessId) {
|
|
116
|
+
queryClient.invalidateQueries({
|
|
117
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees]
|
|
118
|
+
});
|
|
119
|
+
queryClient.invalidateQueries({
|
|
120
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees, feeId]
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Hook to delete a fee
|
|
128
|
+
* @returns Mutation function for deleting fees
|
|
129
|
+
*/
|
|
130
|
+
function useDeleteFeeMutation() {
|
|
131
|
+
const client = useApiClient();
|
|
132
|
+
const queryClient = useQueryClient();
|
|
133
|
+
const businessId = useBusinessId();
|
|
134
|
+
return useMutation({
|
|
135
|
+
mutationFn: async ({
|
|
136
|
+
feeId,
|
|
137
|
+
options,
|
|
138
|
+
config
|
|
139
|
+
}) => {
|
|
140
|
+
if (!businessId) {
|
|
141
|
+
throw new Error("businessId is required for fee operations");
|
|
142
|
+
}
|
|
143
|
+
return await client.businesses.fees.deleteAsync(businessId, feeId, options, config);
|
|
144
|
+
},
|
|
145
|
+
onSuccess: (_, {
|
|
146
|
+
feeId
|
|
147
|
+
}) => {
|
|
148
|
+
if (businessId) {
|
|
149
|
+
queryClient.invalidateQueries({
|
|
150
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees]
|
|
151
|
+
});
|
|
152
|
+
queryClient.invalidateQueries({
|
|
153
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Fees, feeId]
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
export { useCreateFeeMutation, useDeleteFeeMutation, useGetFeeByIdQuery, useListFeesInfiniteQuery, useUpdateFeeMutation };
|
|
161
|
+
//# sourceMappingURL=FeesAPI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeesAPI.mjs","sources":["../../../../../src/apis/business/fees/FeesAPI.tsx"],"sourcesContent":["import {\n\tFeeCreateRequest,\n\tFeeListRequest,\n\tFeeUpdateRequest,\n\tSBApiException,\n\tSBFee,\n\tSBList,\n\tSBRequestOptions,\n} from \"@smartbills/sdk\";\nimport { useApiClient } from \"@/context\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n\tQueryKey,\n\tuseInfiniteQuery,\n\tuseMutation,\n\tuseQuery,\n} from \"@tanstack/react-query\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\nimport { useBusinessId } from \"@/context\";\n\n/**\n * Hook to list fees with infinite scrolling\n * @param request - The list request parameters\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Infinite query result containing paginated fee data\n */\nexport function useListFeesInfiniteQuery(\n\trequest: FeeListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<FeeListRequest>,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for fee operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBFee>,\n\t\tSBApiException,\n\t\tSBList<SBFee>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: request.page || 1,\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Fees,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.fees.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\t{ ...request, page: pageParam },\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tgetNextPageParam: (lastPage) => {\n\t\t\tif (\n\t\t\t\tlastPage.pagination.currentPage < lastPage.pagination.pageCount\n\t\t\t) {\n\t\t\t\treturn lastPage.pagination.currentPage + 1;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tenabled: !!businessId,\n\t});\n}\n\n/**\n * Hook to get a fee by ID\n * @param feeId - The ID of the fee to retrieve\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Query result containing the fee data\n */\nexport function useGetFeeByIdQuery(\n\tfeeId: number,\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for fee operations\");\n\t}\n\n\treturn useQuery<SBFee, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Fees,\n\t\t\tfeeId,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\treturn await client.businesses.fees.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tfeeId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tenabled: !!businessId,\n\t});\n}\n\n/**\n * Hook to create a new fee\n * @returns Mutation function for creating fees\n */\nexport function useCreateFeeMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBFee,\n\t\tSBApiException,\n\t\t{\n\t\t\tdata: FeeCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<FeeCreateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ data, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\"businessId is required for fee operations\");\n\t\t\t}\n\t\t\treturn await client.businesses.fees.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tdata,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tSBApiKeys.Fees,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Hook to update an existing fee\n * @returns Mutation function for updating fees\n */\nexport function useUpdateFeeMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBFee,\n\t\tSBApiException,\n\t\t{\n\t\t\tfeeId: number;\n\t\t\tdata: FeeUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<FeeUpdateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ feeId, data, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\"businessId is required for fee operations\");\n\t\t\t}\n\t\t\treturn await client.businesses.fees.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tfeeId,\n\t\t\t\tdata,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { feeId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tSBApiKeys.Fees,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tSBApiKeys.Fees,\n\t\t\t\t\t\tfeeId,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Hook to delete a fee\n * @returns Mutation function for deleting fees\n */\nexport function useDeleteFeeMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBFee,\n\t\tSBApiException,\n\t\t{\n\t\t\tfeeId: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ feeId, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\"businessId is required for fee operations\");\n\t\t\t}\n\t\t\treturn await client.businesses.fees.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tfeeId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { feeId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tSBApiKeys.Fees,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tSBApiKeys.Fees,\n\t\t\t\t\t\tfeeId,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n"],"names":["useListFeesInfiniteQuery","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","Fees","queryFn","pageParam","businesses","fees","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetFeeByIdQuery","feeId","useQuery","getByIdAsync","useCreateFeeMutation","queryClient","useMutation","mutationFn","data","createAsync","onSuccess","invalidateQueries","useUpdateFeeMutation","updateAsync","_","useDeleteFeeMutation","deleteAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { useApiClient, useBusinessId } from '../../../context/ApiContext.mjs';
|
|
2
|
+
import { useQueryClient, useInfiniteQuery, useQuery, useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { SBApiKeys } from '../../SBApiKeys.mjs';
|
|
4
|
+
|
|
5
|
+
function useListLocationsInfiniteQuery(request = {
|
|
6
|
+
page: 1,
|
|
7
|
+
pageSize: 25
|
|
8
|
+
}, options, config) {
|
|
9
|
+
const client = useApiClient();
|
|
10
|
+
useQueryClient();
|
|
11
|
+
const businessId = useBusinessId();
|
|
12
|
+
if (!businessId) {
|
|
13
|
+
throw new Error("businessId is required for location operations");
|
|
14
|
+
}
|
|
15
|
+
return useInfiniteQuery({
|
|
16
|
+
initialPageParam: request.page || 1,
|
|
17
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations, request, options],
|
|
18
|
+
queryFn: async ({
|
|
19
|
+
pageParam = 1
|
|
20
|
+
}) => {
|
|
21
|
+
return await client.businesses.locations.listAsync(businessId, {
|
|
22
|
+
...request,
|
|
23
|
+
page: pageParam
|
|
24
|
+
}, options, config);
|
|
25
|
+
},
|
|
26
|
+
getNextPageParam: lastPage => {
|
|
27
|
+
if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
|
|
28
|
+
return lastPage.pagination.currentPage + 1;
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
},
|
|
32
|
+
enabled: !!businessId
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
const useGetLocationByIdQuery = (id, options, config) => {
|
|
36
|
+
const client = useApiClient();
|
|
37
|
+
useQueryClient();
|
|
38
|
+
const businessId = useBusinessId();
|
|
39
|
+
if (!businessId) {
|
|
40
|
+
throw new Error("businessId is required for location operations");
|
|
41
|
+
}
|
|
42
|
+
return useQuery({
|
|
43
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations, id, options],
|
|
44
|
+
queryFn: async () => await client.businesses.locations.getByIdAsync(businessId, id, options, config),
|
|
45
|
+
enabled: !!businessId
|
|
46
|
+
});
|
|
47
|
+
};
|
|
48
|
+
const useCreateLocationMutation = () => {
|
|
49
|
+
const client = useApiClient();
|
|
50
|
+
const queryClient = useQueryClient();
|
|
51
|
+
const businessId = useBusinessId();
|
|
52
|
+
return useMutation({
|
|
53
|
+
mutationFn: async ({
|
|
54
|
+
request,
|
|
55
|
+
options,
|
|
56
|
+
config
|
|
57
|
+
}) => {
|
|
58
|
+
if (!businessId) {
|
|
59
|
+
throw new Error("businessId is required for location operations");
|
|
60
|
+
}
|
|
61
|
+
return await client.businesses.locations.createAsync(businessId, request, options, config);
|
|
62
|
+
},
|
|
63
|
+
onSuccess: () => {
|
|
64
|
+
queryClient.invalidateQueries({
|
|
65
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
};
|
|
70
|
+
const useUpdateLocationMutation = () => {
|
|
71
|
+
const client = useApiClient();
|
|
72
|
+
const queryClient = useQueryClient();
|
|
73
|
+
const businessId = useBusinessId();
|
|
74
|
+
return useMutation({
|
|
75
|
+
mutationFn: async ({
|
|
76
|
+
id,
|
|
77
|
+
request,
|
|
78
|
+
options,
|
|
79
|
+
config
|
|
80
|
+
}) => {
|
|
81
|
+
if (!businessId) {
|
|
82
|
+
throw new Error("businessId is required for location operations");
|
|
83
|
+
}
|
|
84
|
+
return await client.businesses.locations.updateAsync(businessId, id, request, options, config);
|
|
85
|
+
},
|
|
86
|
+
onSuccess: (_, {
|
|
87
|
+
id
|
|
88
|
+
}) => {
|
|
89
|
+
queryClient.invalidateQueries({
|
|
90
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations]
|
|
91
|
+
});
|
|
92
|
+
queryClient.invalidateQueries({
|
|
93
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations, id]
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
};
|
|
98
|
+
const useDeleteLocationMutation = () => {
|
|
99
|
+
const client = useApiClient();
|
|
100
|
+
const queryClient = useQueryClient();
|
|
101
|
+
const businessId = useBusinessId();
|
|
102
|
+
return useMutation({
|
|
103
|
+
mutationFn: async ({
|
|
104
|
+
id,
|
|
105
|
+
options,
|
|
106
|
+
config
|
|
107
|
+
}) => {
|
|
108
|
+
if (!businessId) {
|
|
109
|
+
throw new Error("businessId is required for location operations");
|
|
110
|
+
}
|
|
111
|
+
await client.businesses.locations.deleteAsync(businessId, id, options, config);
|
|
112
|
+
},
|
|
113
|
+
onSuccess: (_, {
|
|
114
|
+
id
|
|
115
|
+
}) => {
|
|
116
|
+
queryClient.invalidateQueries({
|
|
117
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations]
|
|
118
|
+
});
|
|
119
|
+
queryClient.invalidateQueries({
|
|
120
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Locations, id]
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export { useCreateLocationMutation, useDeleteLocationMutation, useGetLocationByIdQuery, useListLocationsInfiniteQuery, useUpdateLocationMutation };
|
|
127
|
+
//# sourceMappingURL=LocationsAPI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LocationsAPI.mjs","sources":["../../../../../src/apis/business/locations/LocationsAPI.ts"],"sourcesContent":["import {\n\tLocationsListRequest,\n\tLocationCreateRequest,\n\tLocationUpdateRequest,\n\tSBLocation,\n\tSBRequestOptions,\n\tSBApiException,\n\tSBList,\n} from \"@smartbills/sdk\";\nimport { useApiClient } from \"@/context\";\nimport { useQueryClient } from \"@tanstack/react-query\";\nimport {\n\tQueryKey,\n\tuseInfiniteQuery,\n\tuseMutation,\n\tuseQuery,\n\tInfiniteData,\n} from \"@tanstack/react-query\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\nimport { useBusinessId } from \"@/context\";\n\nexport function useListLocationsInfiniteQuery(\n\trequest: LocationsListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<LocationsListRequest>,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for location operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBLocation>,\n\t\tSBApiException,\n\t\tInfiniteData<SBList<SBLocation>>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: request.page || 1,\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Locations,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.locations.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\t{ ...request, page: pageParam },\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tgetNextPageParam: (lastPage) => {\n\t\t\tif (\n\t\t\t\tlastPage.pagination.currentPage < lastPage.pagination.pageCount\n\t\t\t) {\n\t\t\t\treturn lastPage.pagination.currentPage + 1;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tenabled: !!businessId,\n\t});\n}\n\nexport const useGetLocationByIdQuery = (\n\tid: number,\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig,\n) => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for location operations\");\n\t}\n\n\treturn useQuery<SBLocation, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Locations,\n\t\t\tid,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async () =>\n\t\t\tawait client.businesses.locations.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t),\n\t\tenabled: !!businessId,\n\t});\n};\n\nexport const useCreateLocationMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBLocation,\n\t\tSBApiException,\n\t\t{\n\t\t\trequest: LocationCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<LocationCreateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ request, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for location operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.locations.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\trequest,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Locations,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n};\n\nexport const useUpdateLocationMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBLocation,\n\t\tSBApiException,\n\t\t{\n\t\t\tid: number;\n\t\t\trequest: LocationUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<LocationUpdateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ id, request, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for location operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.locations.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\trequest,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { id }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Locations,\n\t\t\t\t],\n\t\t\t});\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Locations,\n\t\t\t\t\tid,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n};\n\nexport const useDeleteLocationMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tvoid,\n\t\tSBApiException,\n\t\t{\n\t\t\tid: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ id, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for location operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait client.businesses.locations.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { id }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Locations,\n\t\t\t\t],\n\t\t\t});\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Locations,\n\t\t\t\t\tid,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n};\n"],"names":["useListLocationsInfiniteQuery","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","Locations","queryFn","pageParam","businesses","locations","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetLocationByIdQuery","id","useQuery","getByIdAsync","useCreateLocationMutation","queryClient","useMutation","mutationFn","createAsync","onSuccess","invalidateQueries","useUpdateLocationMutation","updateAsync","_","useDeleteLocationMutation","deleteAsync"],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { useApiClient, useBusinessId } from '../../../context/ApiContext.mjs';
|
|
2
|
+
import { useQueryClient, useInfiniteQuery, useQuery, useMutation } from '@tanstack/react-query';
|
|
3
|
+
import { SBApiKeys } from '../../SBApiKeys.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Hook to list products with infinite scrolling
|
|
7
|
+
* @param request - The list request parameters
|
|
8
|
+
* @param options - Optional request options
|
|
9
|
+
* @param config - Optional axios request config
|
|
10
|
+
* @returns Infinite query result containing the paginated products
|
|
11
|
+
*/
|
|
12
|
+
function useListProductsInfiniteQuery(request = {
|
|
13
|
+
page: 1,
|
|
14
|
+
pageSize: 25
|
|
15
|
+
}, options, config) {
|
|
16
|
+
const client = useApiClient();
|
|
17
|
+
useQueryClient();
|
|
18
|
+
const businessId = useBusinessId();
|
|
19
|
+
if (!businessId) {
|
|
20
|
+
throw new Error("businessId is required for product operations");
|
|
21
|
+
}
|
|
22
|
+
return useInfiniteQuery({
|
|
23
|
+
initialPageParam: request.page || 1,
|
|
24
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products, request, options],
|
|
25
|
+
queryFn: async ({
|
|
26
|
+
pageParam = 1
|
|
27
|
+
}) => {
|
|
28
|
+
return await client.businesses.products.listAsync(businessId, {
|
|
29
|
+
...request,
|
|
30
|
+
page: pageParam
|
|
31
|
+
}, options, config);
|
|
32
|
+
},
|
|
33
|
+
getNextPageParam: lastPage => {
|
|
34
|
+
if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
|
|
35
|
+
return lastPage.pagination.currentPage + 1;
|
|
36
|
+
}
|
|
37
|
+
return undefined;
|
|
38
|
+
},
|
|
39
|
+
enabled: !!businessId
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Hook to get a product by ID
|
|
44
|
+
* @param id - The product ID
|
|
45
|
+
* @param options - Optional request options
|
|
46
|
+
* @param config - Optional axios request config
|
|
47
|
+
* @returns Query result containing the product data
|
|
48
|
+
*/
|
|
49
|
+
function useGetProductByIdQuery(id, options, config) {
|
|
50
|
+
const client = useApiClient();
|
|
51
|
+
useQueryClient();
|
|
52
|
+
const businessId = useBusinessId();
|
|
53
|
+
return useQuery({
|
|
54
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products, id],
|
|
55
|
+
queryFn: async () => {
|
|
56
|
+
if (!businessId) {
|
|
57
|
+
throw new Error("businessId is required for product operations");
|
|
58
|
+
}
|
|
59
|
+
return await client.businesses.products.getByIdAsync(businessId, id, options, config);
|
|
60
|
+
}
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Hook to create a new product
|
|
65
|
+
* @returns Mutation function to create a product
|
|
66
|
+
*/
|
|
67
|
+
function useCreateProductMutation() {
|
|
68
|
+
const client = useApiClient();
|
|
69
|
+
const queryClient = useQueryClient();
|
|
70
|
+
const businessId = useBusinessId();
|
|
71
|
+
return useMutation({
|
|
72
|
+
mutationKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products],
|
|
73
|
+
mutationFn: async request => {
|
|
74
|
+
if (!businessId) {
|
|
75
|
+
throw new Error("businessId is required for product operations");
|
|
76
|
+
}
|
|
77
|
+
return await client.businesses.products.createAsync(businessId, request);
|
|
78
|
+
},
|
|
79
|
+
onSuccess: () => {
|
|
80
|
+
queryClient.invalidateQueries({
|
|
81
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products]
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Hook to delete a product
|
|
88
|
+
* @returns Mutation function for deleting products
|
|
89
|
+
*/
|
|
90
|
+
function useDeleteProductMutation() {
|
|
91
|
+
const client = useApiClient();
|
|
92
|
+
const queryClient = useQueryClient();
|
|
93
|
+
const businessId = useBusinessId();
|
|
94
|
+
return useMutation({
|
|
95
|
+
mutationFn: async ({
|
|
96
|
+
id,
|
|
97
|
+
options,
|
|
98
|
+
config
|
|
99
|
+
}) => {
|
|
100
|
+
if (!businessId) {
|
|
101
|
+
throw new Error("businessId is required for product operations");
|
|
102
|
+
}
|
|
103
|
+
return await client.businesses.products.deleteAsync(businessId, id, options, config);
|
|
104
|
+
},
|
|
105
|
+
onSuccess: (_, {
|
|
106
|
+
id
|
|
107
|
+
}) => {
|
|
108
|
+
queryClient.invalidateQueries({
|
|
109
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products]
|
|
110
|
+
});
|
|
111
|
+
queryClient.invalidateQueries({
|
|
112
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products, id]
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Hook to update a product
|
|
119
|
+
* @returns Mutation function for updating products
|
|
120
|
+
*/
|
|
121
|
+
function useUpdateProductMutation() {
|
|
122
|
+
const client = useApiClient();
|
|
123
|
+
const queryClient = useQueryClient();
|
|
124
|
+
const businessId = useBusinessId();
|
|
125
|
+
return useMutation({
|
|
126
|
+
mutationFn: async ({
|
|
127
|
+
id,
|
|
128
|
+
request,
|
|
129
|
+
options,
|
|
130
|
+
config
|
|
131
|
+
}) => {
|
|
132
|
+
if (!businessId) {
|
|
133
|
+
throw new Error("businessId is required for product operations");
|
|
134
|
+
}
|
|
135
|
+
return await client.businesses.products.updateAsync(businessId, id, request, options, config);
|
|
136
|
+
},
|
|
137
|
+
onSuccess: (_, {
|
|
138
|
+
id
|
|
139
|
+
}) => {
|
|
140
|
+
queryClient.invalidateQueries({
|
|
141
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products]
|
|
142
|
+
});
|
|
143
|
+
queryClient.invalidateQueries({
|
|
144
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products, id]
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Hook to batch upsert products
|
|
151
|
+
* @returns Mutation function for batch upsert operations
|
|
152
|
+
*/
|
|
153
|
+
function useBatchUpsertProductsMutation() {
|
|
154
|
+
const client = useApiClient();
|
|
155
|
+
const queryClient = useQueryClient();
|
|
156
|
+
const businessId = useBusinessId();
|
|
157
|
+
return useMutation({
|
|
158
|
+
mutationFn: async ({
|
|
159
|
+
requests,
|
|
160
|
+
options,
|
|
161
|
+
config
|
|
162
|
+
}) => {
|
|
163
|
+
if (!businessId) {
|
|
164
|
+
throw new Error("businessId is required for product operations");
|
|
165
|
+
}
|
|
166
|
+
return await client.businesses.products.batch(businessId, requests, options, config);
|
|
167
|
+
},
|
|
168
|
+
onSuccess: () => {
|
|
169
|
+
queryClient.invalidateQueries({
|
|
170
|
+
queryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products]
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export { useBatchUpsertProductsMutation, useCreateProductMutation, useDeleteProductMutation, useGetProductByIdQuery, useListProductsInfiniteQuery, useUpdateProductMutation };
|
|
177
|
+
//# sourceMappingURL=ProductsAPI.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProductsAPI.mjs","sources":["../../../../../src/apis/business/products/ProductsAPI.tsx"],"sourcesContent":["import {\n\tProductListRequest,\n\tProductCreateRequest,\n\tProductUpdateRequest,\n\tSBProduct,\n\tSBRequestOptions,\n\tSBApiException,\n\tBatchUpsertRequest,\n\tProductUpsertRequest,\n\tSBBatch,\n\tSBProductImage,\n\tSBList,\n} from \"@smartbills/sdk\";\nimport { useApiClient } from \"@/context\";\nimport {\n\tQueryKey,\n\tuseInfiniteQuery,\n\tuseMutation,\n\tuseQuery,\n\tInfiniteData,\n\tuseQueryClient,\n} from \"@tanstack/react-query\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { useBusinessId } from \"@/context/ApiContext\";\n\n/**\n * Hook to list products with infinite scrolling\n * @param request - The list request parameters\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Infinite query result containing the paginated products\n */\nexport function useListProductsInfiniteQuery(\n\trequest: ProductListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<ProductListRequest>,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for product operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBProduct>,\n\t\tSBApiException,\n\t\tInfiniteData<SBList<SBProduct>>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: request.page || 1,\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Products,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.products.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\t{ ...request, page: pageParam },\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tgetNextPageParam: (lastPage) => {\n\t\t\tif (\n\t\t\t\tlastPage.pagination.currentPage < lastPage.pagination.pageCount\n\t\t\t) {\n\t\t\t\treturn lastPage.pagination.currentPage + 1;\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\t\tenabled: !!businessId,\n\t});\n}\n\n/**\n * Hook to get a product by ID\n * @param id - The product ID\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Query result containing the product data\n */\nexport function useGetProductByIdQuery(\n\tid: number,\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useQuery<SBProduct, Error>({\n\t\tqueryKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products, id],\n\t\tqueryFn: async () => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.products.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t});\n}\n\n/**\n * Hook to create a new product\n * @returns Mutation function to create a product\n */\nexport function useCreateProductMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<SBProduct, SBApiException, ProductCreateRequest>({\n\t\tmutationKey: [SBApiKeys.Businesses, businessId, SBApiKeys.Products],\n\t\tmutationFn: async (request: ProductCreateRequest) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.products.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\trequest,\n\t\t\t);\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n\n/**\n * Hook to delete a product\n * @returns Mutation function for deleting products\n */\nexport function useDeleteProductMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProduct,\n\t\tError,\n\t\t{\n\t\t\tid: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ id, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.products.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { id }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t],\n\t\t\t});\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t\tid,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n\n/**\n * Hook to update a product\n * @returns Mutation function for updating products\n */\nexport function useUpdateProductMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProduct,\n\t\tError,\n\t\t{\n\t\t\tid: number;\n\t\t\trequest: ProductUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<ProductUpdateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ id, request, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.products.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tid,\n\t\t\t\trequest,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { id }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t],\n\t\t\t});\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t\tid,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n\n/**\n * Hook to batch upsert products\n * @returns Mutation function for batch upsert operations\n */\nexport function useBatchUpsertProductsMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBBatch<SBProduct>,\n\t\tError,\n\t\t{\n\t\t\trequests: BatchUpsertRequest<ProductUpsertRequest>;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<\n\t\t\t\tBatchUpsertRequest<ProductUpsertRequest>\n\t\t\t>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ requests, options, config }) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.products.batch(\n\t\t\t\tbusinessId,\n\t\t\t\trequests,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: () => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Businesses,\n\t\t\t\t\tbusinessId,\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n"],"names":["useListProductsInfiniteQuery","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","Products","queryFn","pageParam","businesses","products","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetProductByIdQuery","id","useQuery","getByIdAsync","useCreateProductMutation","queryClient","useMutation","mutationKey","mutationFn","createAsync","onSuccess","invalidateQueries","useDeleteProductMutation","deleteAsync","_","useUpdateProductMutation","updateAsync","useBatchUpsertProductsMutation","requests","batch"],"mappings":"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"}
|