@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.
Files changed (161) hide show
  1. package/dist/@types/index.d.ts +1447 -0
  2. package/dist/@types/index.d.ts.map +1 -0
  3. package/dist/cjs/apis/SBApiKeys.cjs +56 -0
  4. package/dist/cjs/apis/SBApiKeys.cjs.map +1 -0
  5. package/dist/cjs/apis/api-logs/LogsAPI.cjs +42 -0
  6. package/dist/cjs/apis/api-logs/LogsAPI.cjs.map +1 -0
  7. package/dist/cjs/apis/attachments/AttachmentsAPI.cjs +147 -0
  8. package/dist/cjs/apis/attachments/AttachmentsAPI.cjs.map +1 -0
  9. package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs +88 -0
  10. package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs.map +1 -0
  11. package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs +58 -0
  12. package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs.map +1 -0
  13. package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs +57 -0
  14. package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs.map +1 -0
  15. package/dist/cjs/apis/business/BusinessAPI.cjs +172 -0
  16. package/dist/cjs/apis/business/BusinessAPI.cjs.map +1 -0
  17. package/dist/cjs/apis/business/customers/CustomerAPI.cjs +161 -0
  18. package/dist/cjs/apis/business/customers/CustomerAPI.cjs.map +1 -0
  19. package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs +71 -0
  20. package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs.map +1 -0
  21. package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs +176 -0
  22. package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs.map +1 -0
  23. package/dist/cjs/apis/business/departments/DepartmentApi.cjs +168 -0
  24. package/dist/cjs/apis/business/departments/DepartmentApi.cjs.map +1 -0
  25. package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs +137 -0
  26. package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs.map +1 -0
  27. package/dist/cjs/apis/business/fees/FeesAPI.cjs +167 -0
  28. package/dist/cjs/apis/business/fees/FeesAPI.cjs.map +1 -0
  29. package/dist/cjs/apis/business/locations/LocationsAPI.cjs +133 -0
  30. package/dist/cjs/apis/business/locations/LocationsAPI.cjs.map +1 -0
  31. package/dist/cjs/apis/business/products/ProductsAPI.cjs +184 -0
  32. package/dist/cjs/apis/business/products/ProductsAPI.cjs.map +1 -0
  33. package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs +195 -0
  34. package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs.map +1 -0
  35. package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs +169 -0
  36. package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs.map +1 -0
  37. package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs +183 -0
  38. package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs.map +1 -0
  39. package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs +185 -0
  40. package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs.map +1 -0
  41. package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs +139 -0
  42. package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs.map +1 -0
  43. package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs +143 -0
  44. package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs.map +1 -0
  45. package/dist/cjs/apis/business/tables/TablesAPI.cjs +75 -0
  46. package/dist/cjs/apis/business/tables/TablesAPI.cjs.map +1 -0
  47. package/dist/cjs/apis/business/taxes/TaxesAPI.cjs +140 -0
  48. package/dist/cjs/apis/business/taxes/TaxesAPI.cjs.map +1 -0
  49. package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs +161 -0
  50. package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs.map +1 -0
  51. package/dist/cjs/apis/business/team/TeamMembersAPI.cjs +93 -0
  52. package/dist/cjs/apis/business/team/TeamMembersAPI.cjs.map +1 -0
  53. package/dist/cjs/apis/business/vendors/VendorsAPI.cjs +237 -0
  54. package/dist/cjs/apis/business/vendors/VendorsAPI.cjs.map +1 -0
  55. package/dist/cjs/apis/documents/DocumentsAPI.cjs +87 -0
  56. package/dist/cjs/apis/documents/DocumentsAPI.cjs.map +1 -0
  57. package/dist/cjs/apis/expenses/ExpensesAPI.cjs +62 -0
  58. package/dist/cjs/apis/expenses/ExpensesAPI.cjs.map +1 -0
  59. package/dist/cjs/apis/friends/FriendsAPI.cjs +150 -0
  60. package/dist/cjs/apis/friends/FriendsAPI.cjs.map +1 -0
  61. package/dist/cjs/apis/integrations/IntegrationsAPI.cjs +55 -0
  62. package/dist/cjs/apis/integrations/IntegrationsAPI.cjs.map +1 -0
  63. package/dist/cjs/apis/invoices/InvoicesAPI.cjs +168 -0
  64. package/dist/cjs/apis/invoices/InvoicesAPI.cjs.map +1 -0
  65. package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs +484 -0
  66. package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs.map +1 -0
  67. package/dist/cjs/apis/notifications/NotificationAPI.cjs +103 -0
  68. package/dist/cjs/apis/notifications/NotificationAPI.cjs.map +1 -0
  69. package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs +125 -0
  70. package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs.map +1 -0
  71. package/dist/cjs/apis/receipts/ReceiptAPI.cjs +135 -0
  72. package/dist/cjs/apis/receipts/ReceiptAPI.cjs.map +1 -0
  73. package/dist/cjs/apis/user/UserAPI.cjs +130 -0
  74. package/dist/cjs/apis/user/UserAPI.cjs.map +1 -0
  75. package/dist/cjs/apis/vendors/VendorsAPI.cjs +215 -0
  76. package/dist/cjs/apis/vendors/VendorsAPI.cjs.map +1 -0
  77. package/dist/cjs/context/ApiContext.cjs +94 -0
  78. package/dist/cjs/context/ApiContext.cjs.map +1 -0
  79. package/dist/cjs/index.cjs +224 -0
  80. package/dist/cjs/index.cjs.map +1 -0
  81. package/dist/esm/apis/SBApiKeys.mjs +56 -0
  82. package/dist/esm/apis/SBApiKeys.mjs.map +1 -0
  83. package/dist/esm/apis/api-logs/LogsAPI.mjs +39 -0
  84. package/dist/esm/apis/api-logs/LogsAPI.mjs.map +1 -0
  85. package/dist/esm/apis/attachments/AttachmentsAPI.mjs +142 -0
  86. package/dist/esm/apis/attachments/AttachmentsAPI.mjs.map +1 -0
  87. package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs +84 -0
  88. package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs.map +1 -0
  89. package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs +55 -0
  90. package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs.map +1 -0
  91. package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs +54 -0
  92. package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs.map +1 -0
  93. package/dist/esm/apis/business/BusinessAPI.mjs +165 -0
  94. package/dist/esm/apis/business/BusinessAPI.mjs.map +1 -0
  95. package/dist/esm/apis/business/customers/CustomerAPI.mjs +155 -0
  96. package/dist/esm/apis/business/customers/CustomerAPI.mjs.map +1 -0
  97. package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs +68 -0
  98. package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs.map +1 -0
  99. package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs +170 -0
  100. package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs.map +1 -0
  101. package/dist/esm/apis/business/departments/DepartmentApi.mjs +161 -0
  102. package/dist/esm/apis/business/departments/DepartmentApi.mjs.map +1 -0
  103. package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs +132 -0
  104. package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs.map +1 -0
  105. package/dist/esm/apis/business/fees/FeesAPI.mjs +161 -0
  106. package/dist/esm/apis/business/fees/FeesAPI.mjs.map +1 -0
  107. package/dist/esm/apis/business/locations/LocationsAPI.mjs +127 -0
  108. package/dist/esm/apis/business/locations/LocationsAPI.mjs.map +1 -0
  109. package/dist/esm/apis/business/products/ProductsAPI.mjs +177 -0
  110. package/dist/esm/apis/business/products/ProductsAPI.mjs.map +1 -0
  111. package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs +188 -0
  112. package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs.map +1 -0
  113. package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs +163 -0
  114. package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs.map +1 -0
  115. package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs +177 -0
  116. package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs.map +1 -0
  117. package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs +179 -0
  118. package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs.map +1 -0
  119. package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs +133 -0
  120. package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs.map +1 -0
  121. package/dist/esm/apis/business/reviews/ReviewsAPI.mjs +137 -0
  122. package/dist/esm/apis/business/reviews/ReviewsAPI.mjs.map +1 -0
  123. package/dist/esm/apis/business/tables/TablesAPI.mjs +70 -0
  124. package/dist/esm/apis/business/tables/TablesAPI.mjs.map +1 -0
  125. package/dist/esm/apis/business/taxes/TaxesAPI.mjs +134 -0
  126. package/dist/esm/apis/business/taxes/TaxesAPI.mjs.map +1 -0
  127. package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs +153 -0
  128. package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs.map +1 -0
  129. package/dist/esm/apis/business/team/TeamMembersAPI.mjs +88 -0
  130. package/dist/esm/apis/business/team/TeamMembersAPI.mjs.map +1 -0
  131. package/dist/esm/apis/business/vendors/VendorsAPI.mjs +228 -0
  132. package/dist/esm/apis/business/vendors/VendorsAPI.mjs.map +1 -0
  133. package/dist/esm/apis/documents/DocumentsAPI.mjs +82 -0
  134. package/dist/esm/apis/documents/DocumentsAPI.mjs.map +1 -0
  135. package/dist/esm/apis/expenses/ExpensesAPI.mjs +58 -0
  136. package/dist/esm/apis/expenses/ExpensesAPI.mjs.map +1 -0
  137. package/dist/esm/apis/friends/FriendsAPI.mjs +144 -0
  138. package/dist/esm/apis/friends/FriendsAPI.mjs.map +1 -0
  139. package/dist/esm/apis/integrations/IntegrationsAPI.mjs +52 -0
  140. package/dist/esm/apis/integrations/IntegrationsAPI.mjs.map +1 -0
  141. package/dist/esm/apis/invoices/InvoicesAPI.mjs +161 -0
  142. package/dist/esm/apis/invoices/InvoicesAPI.mjs.map +1 -0
  143. package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs +482 -0
  144. package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs.map +1 -0
  145. package/dist/esm/apis/notifications/NotificationAPI.mjs +98 -0
  146. package/dist/esm/apis/notifications/NotificationAPI.mjs.map +1 -0
  147. package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs +117 -0
  148. package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs.map +1 -0
  149. package/dist/esm/apis/receipts/ReceiptAPI.mjs +129 -0
  150. package/dist/esm/apis/receipts/ReceiptAPI.mjs.map +1 -0
  151. package/dist/esm/apis/user/UserAPI.mjs +123 -0
  152. package/dist/esm/apis/user/UserAPI.mjs.map +1 -0
  153. package/dist/esm/apis/vendors/VendorsAPI.mjs +204 -0
  154. package/dist/esm/apis/vendors/VendorsAPI.mjs.map +1 -0
  155. package/dist/esm/context/ApiContext.mjs +86 -0
  156. package/dist/esm/context/ApiContext.mjs.map +1 -0
  157. package/dist/esm/index.mjs +39 -0
  158. package/dist/esm/index.mjs.map +1 -0
  159. package/dist/umd/index.js +5099 -0
  160. package/dist/umd/index.js.map +1 -0
  161. package/package.json +3 -3
@@ -0,0 +1,188 @@
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 fetch a list of product images for a specific product using infinite query
7
+ * @param productId - The ID of the product
8
+ * @param request - The pagination request parameters
9
+ * @param options - Optional request options
10
+ * @param config - Optional Axios request configuration
11
+ * @returns An infinite query result containing paginated product images data
12
+ */
13
+ function useListProductImagesInfiniteQuery(productId, request = {
14
+ page: 1,
15
+ pageSize: 25
16
+ }, options, config) {
17
+ const client = useApiClient();
18
+ useQueryClient();
19
+ const businessId = useBusinessId();
20
+ if (!businessId) {
21
+ throw new Error("businessId is required for product image operations");
22
+ }
23
+ return useInfiniteQuery({
24
+ initialPageParam: 1,
25
+ queryKey: [SBApiKeys.Products, businessId, productId, SBApiKeys.ProductImages, request],
26
+ queryFn: async ({
27
+ pageParam = 1
28
+ }) => {
29
+ return await client.businesses.productImages.listAsync(businessId, productId, {
30
+ ...request,
31
+ page: pageParam
32
+ }, options, config);
33
+ },
34
+ getNextPageParam: lastPage => {
35
+ if (lastPage.pagination.currentPage === lastPage.pagination.pageCount) {
36
+ return undefined;
37
+ }
38
+ return lastPage.pagination.currentPage + 1;
39
+ },
40
+ enabled: !!businessId && !!productId
41
+ });
42
+ }
43
+ /**
44
+ * Hook to fetch a list of product images for a specific product
45
+ * @param productId - The ID of the product
46
+ * @param request - The pagination request parameters
47
+ * @param options - Optional request options
48
+ * @param config - Optional Axios request configuration
49
+ * @returns A query result containing paginated product images data
50
+ */
51
+ function useListProductImagesQuery(productId, request = {
52
+ page: 1,
53
+ pageSize: 25
54
+ }, options, config) {
55
+ const client = useApiClient();
56
+ useQueryClient();
57
+ const businessId = useBusinessId();
58
+ if (!businessId) {
59
+ throw new Error("businessId is required for product image operations");
60
+ }
61
+ return useQuery({
62
+ queryKey: [SBApiKeys.Products, businessId, productId, SBApiKeys.ProductImages, request],
63
+ queryFn: async () => {
64
+ return await client.businesses.productImages.listAsync(businessId, productId, request, options, config);
65
+ },
66
+ enabled: !!businessId && !!productId
67
+ });
68
+ }
69
+ /**
70
+ * Hook to fetch a specific product image by ID
71
+ * @param productId - The ID of the product
72
+ * @param imageId - The ID of the product image to retrieve
73
+ * @param options - Optional request options
74
+ * @param config - Optional Axios request configuration
75
+ * @returns A query result containing the product image data
76
+ */
77
+ function useGetProductImageByIdQuery(productId, imageId, options, config) {
78
+ const client = useApiClient();
79
+ useQueryClient();
80
+ const businessId = useBusinessId();
81
+ if (!businessId) {
82
+ throw new Error("businessId is required for product image operations");
83
+ }
84
+ return useQuery({
85
+ queryKey: [SBApiKeys.Products, businessId, productId, SBApiKeys.ProductImages, imageId],
86
+ queryFn: async () => await client.businesses.productImages.getByIdAsync(businessId, productId, imageId, options, config),
87
+ enabled: !!businessId && !!productId && !!imageId
88
+ });
89
+ }
90
+ /**
91
+ * Hook to create a new product image
92
+ * @returns A mutation function to create a product image
93
+ */
94
+ function useCreateProductImageMutation() {
95
+ const client = useApiClient();
96
+ const queryClient = useQueryClient();
97
+ const businessId = useBusinessId();
98
+ return useMutation({
99
+ mutationFn: async ({
100
+ productId,
101
+ request,
102
+ options,
103
+ config
104
+ }) => {
105
+ return await client.businesses.productImages.createAsync(businessId, productId, request, options, config);
106
+ },
107
+ onSuccess: (_, {
108
+ productId
109
+ }) => {
110
+ queryClient.invalidateQueries({
111
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
112
+ });
113
+ queryClient.invalidateQueries({
114
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
115
+ });
116
+ }
117
+ });
118
+ }
119
+ /**
120
+ * Hook to update an existing product image
121
+ * @returns A mutation function to update a product image
122
+ */
123
+ function useUpdateProductImageMutation() {
124
+ const client = useApiClient();
125
+ const queryClient = useQueryClient();
126
+ const businessId = useBusinessId();
127
+ return useMutation({
128
+ mutationFn: async ({
129
+ productId,
130
+ imageId,
131
+ request,
132
+ options,
133
+ config
134
+ }) => {
135
+ return await client.businesses.productImages.updateAsync(businessId, productId, imageId, request, options, config);
136
+ },
137
+ onSuccess: (_, {
138
+ productId,
139
+ imageId
140
+ }) => {
141
+ queryClient.invalidateQueries({
142
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
143
+ });
144
+ queryClient.invalidateQueries({
145
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages, imageId]
146
+ });
147
+ queryClient.invalidateQueries({
148
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
149
+ });
150
+ }
151
+ });
152
+ }
153
+ /**
154
+ * Hook to delete a product image
155
+ * @returns A mutation function to delete a product image
156
+ */
157
+ function useDeleteProductImageMutation() {
158
+ const client = useApiClient();
159
+ const queryClient = useQueryClient();
160
+ const businessId = useBusinessId();
161
+ return useMutation({
162
+ mutationFn: async ({
163
+ productId,
164
+ imageId,
165
+ options,
166
+ config
167
+ }) => {
168
+ return await client.businesses.productImages.deleteAsync(businessId, productId, imageId, options, config);
169
+ },
170
+ onSuccess: (_, {
171
+ productId,
172
+ imageId
173
+ }) => {
174
+ queryClient.invalidateQueries({
175
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
176
+ });
177
+ queryClient.invalidateQueries({
178
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages, imageId]
179
+ });
180
+ queryClient.invalidateQueries({
181
+ queryKey: [SBApiKeys.Products, productId, SBApiKeys.ProductImages]
182
+ });
183
+ }
184
+ });
185
+ }
186
+
187
+ export { useCreateProductImageMutation, useDeleteProductImageMutation, useGetProductImageByIdQuery, useListProductImagesInfiniteQuery, useListProductImagesQuery, useUpdateProductImageMutation };
188
+ //# sourceMappingURL=ProductImagesAPI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductImagesAPI.mjs","sources":["../../../../../../src/apis/business/products/images/ProductImagesAPI.tsx"],"sourcesContent":["import {\n\tSBRequestOptions,\n\tSBApiException,\n\tSBProductImage,\n\tProductImageCreateRequest,\n\tProductImageUpdateRequest,\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} from \"@tanstack/react-query\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { useBusinessId } from \"@/context\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\n\n/**\n * Hook to fetch a list of product images for a specific product using infinite query\n * @param productId - The ID of the product\n * @param request - The pagination request parameters\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns An infinite query result containing paginated product images data\n */\nexport function useListProductImagesInfiniteQuery(\n\tproductId: number,\n\trequest: { page?: number; pageSize?: number } = { page: 1, pageSize: 25 },\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 product image operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBProductImage>,\n\t\tSBApiException,\n\t\tSBList<SBProductImage>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: 1,\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Products,\n\t\t\tbusinessId,\n\t\t\tproductId,\n\t\t\tSBApiKeys.ProductImages,\n\t\t\trequest,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.productImages.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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 ===\n\t\t\t\tlastPage.pagination.pageCount\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn lastPage.pagination.currentPage + 1;\n\t\t},\n\t\tenabled: !!businessId && !!productId,\n\t});\n}\n\n/**\n * Hook to fetch a list of product images for a specific product\n * @param productId - The ID of the product\n * @param request - The pagination request parameters\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns A query result containing paginated product images data\n */\nexport function useListProductImagesQuery(\n\tproductId: number,\n\trequest: { page?: number; pageSize?: number } = { page: 1, pageSize: 25 },\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 product image operations\");\n\t}\n\n\treturn useQuery({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Products,\n\t\t\tbusinessId,\n\t\t\tproductId,\n\t\t\tSBApiKeys.ProductImages,\n\t\t\trequest,\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\treturn await client.businesses.productImages.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\trequest,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tenabled: !!businessId && !!productId,\n\t});\n}\n\n/**\n * Hook to fetch a specific product image by ID\n * @param productId - The ID of the product\n * @param imageId - The ID of the product image to retrieve\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns A query result containing the product image data\n */\nexport function useGetProductImageByIdQuery(\n\tproductId: number,\n\timageId: 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 product image operations\");\n\t}\n\n\treturn useQuery<SBProductImage, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Products,\n\t\t\tbusinessId,\n\t\t\tproductId,\n\t\t\tSBApiKeys.ProductImages,\n\t\t\timageId,\n\t\t],\n\t\tqueryFn: async () =>\n\t\t\tawait client.businesses.productImages.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\timageId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t),\n\t\tenabled: !!businessId && !!productId && !!imageId,\n\t});\n}\n\n/**\n * Hook to create a new product image\n * @returns A mutation function to create a product image\n */\nexport function useCreateProductImageMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductImage,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\trequest: ProductImageCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ productId, request, options, config }) => {\n\t\t\treturn await client.businesses.productImages.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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: (_, { productId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\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.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n\n/**\n * Hook to update an existing product image\n * @returns A mutation function to update a product image\n */\nexport function useUpdateProductImageMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductImage,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\timageId: number;\n\t\t\trequest: ProductImageUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({\n\t\t\tproductId,\n\t\t\timageId,\n\t\t\trequest,\n\t\t\toptions,\n\t\t\tconfig,\n\t\t}) => {\n\t\t\treturn await client.businesses.productImages.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\timageId,\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: (_, { productId, imageId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\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.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\n\t\t\t\t\timageId,\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.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n\n/**\n * Hook to delete a product image\n * @returns A mutation function to delete a product image\n */\nexport function useDeleteProductImageMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductImage,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\timageId: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ productId, imageId, options, config }) => {\n\t\t\treturn await client.businesses.productImages.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\timageId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { productId, imageId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [\n\t\t\t\t\tSBApiKeys.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\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.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\n\t\t\t\t\timageId,\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.Products,\n\t\t\t\t\tproductId,\n\t\t\t\t\tSBApiKeys.ProductImages,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n}\n"],"names":["useListProductImagesInfiniteQuery","productId","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Products","ProductImages","queryFn","pageParam","businesses","productImages","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useListProductImagesQuery","useQuery","useGetProductImageByIdQuery","imageId","getByIdAsync","useCreateProductImageMutation","queryClient","useMutation","mutationFn","createAsync","onSuccess","_","invalidateQueries","useUpdateProductImageMutation","updateAsync","useDeleteProductImageMutation","deleteAsync"],"mappings":"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"}
@@ -0,0 +1,163 @@
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 fetch a list of modifiers for a specific business and product with infinite scrolling
7
+ * @param productId - The ID of the product
8
+ * @param request - The pagination request parameters
9
+ * @param options - Optional request options
10
+ * @param config - Optional Axios request configuration
11
+ * @returns An infinite query result containing paginated modifiers data
12
+ */
13
+ function useListProductModifiersInfiniteQuery(productId, request = {
14
+ page: 1,
15
+ pageSize: 25
16
+ }, options, config) {
17
+ const client = useApiClient();
18
+ useQueryClient();
19
+ const businessId = useBusinessId();
20
+ if (!businessId) {
21
+ throw new Error("businessId is required for product modifier operations");
22
+ }
23
+ return useInfiniteQuery({
24
+ initialPageParam: request.page || 1,
25
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId, request, options],
26
+ queryFn: async ({
27
+ pageParam = 1
28
+ }) => {
29
+ return await client.businesses.productModifiers.listAsync(businessId, productId, {
30
+ ...request,
31
+ page: pageParam
32
+ }, options, config);
33
+ },
34
+ getNextPageParam: lastPage => {
35
+ if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
36
+ return lastPage.pagination.currentPage + 1;
37
+ }
38
+ return undefined;
39
+ },
40
+ enabled: !!businessId
41
+ });
42
+ }
43
+ /**
44
+ * Hook to fetch a specific modifier by ID for a business and product
45
+ * @param productId - The ID of the product
46
+ * @param modifierId - The ID of the modifier to retrieve
47
+ * @param options - Optional request options
48
+ * @param config - Optional Axios request configuration
49
+ * @returns A query result containing the modifier data
50
+ */
51
+ function useGetProductModifierByIdQuery(productId, modifierId, options, config) {
52
+ const client = useApiClient();
53
+ useQueryClient();
54
+ const businessId = useBusinessId();
55
+ if (!businessId) {
56
+ throw new Error("businessId is required for product modifier operations");
57
+ }
58
+ return useQuery({
59
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId, modifierId, options],
60
+ queryFn: async () => {
61
+ return await client.businesses.productModifiers.getByIdAsync(businessId, productId, modifierId, options, config);
62
+ },
63
+ enabled: !!businessId
64
+ });
65
+ }
66
+ /**
67
+ * Hook to create a new modifier for a product
68
+ * @returns A mutation function to create a modifier
69
+ */
70
+ function useCreateProductModifierMutation(productId) {
71
+ const client = useApiClient();
72
+ const queryClient = useQueryClient();
73
+ const businessId = useBusinessId();
74
+ return useMutation({
75
+ mutationFn: async ({
76
+ data,
77
+ options,
78
+ config
79
+ }) => {
80
+ if (!businessId) {
81
+ throw new Error("businessId is required for product modifier operations");
82
+ }
83
+ return await client.businesses.productModifiers.createAsync(businessId, productId, data, options, config);
84
+ },
85
+ onSuccess: () => {
86
+ if (businessId) {
87
+ queryClient.invalidateQueries({
88
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId]
89
+ });
90
+ }
91
+ }
92
+ });
93
+ }
94
+ /**
95
+ * Hook to update an existing modifier for a product
96
+ * @returns A mutation function to update a modifier
97
+ */
98
+ function useUpdateProductModifierMutation(productId) {
99
+ const client = useApiClient();
100
+ const queryClient = useQueryClient();
101
+ const businessId = useBusinessId();
102
+ return useMutation({
103
+ mutationFn: async ({
104
+ modifierId,
105
+ data,
106
+ options,
107
+ config
108
+ }) => {
109
+ if (!businessId) {
110
+ throw new Error("businessId is required for product modifier operations");
111
+ }
112
+ return await client.businesses.productModifiers.updateAsync(businessId, productId, modifierId, data, options, config);
113
+ },
114
+ onSuccess: (_, {
115
+ modifierId
116
+ }) => {
117
+ if (businessId) {
118
+ queryClient.invalidateQueries({
119
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId]
120
+ });
121
+ queryClient.invalidateQueries({
122
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId, modifierId]
123
+ });
124
+ }
125
+ }
126
+ });
127
+ }
128
+ /**
129
+ * Hook to delete a modifier for a product
130
+ * @returns A mutation function to delete a modifier
131
+ */
132
+ function useDeleteProductModifierMutation(productId) {
133
+ const client = useApiClient();
134
+ const queryClient = useQueryClient();
135
+ const businessId = useBusinessId();
136
+ return useMutation({
137
+ mutationFn: async ({
138
+ modifierId,
139
+ options,
140
+ config
141
+ }) => {
142
+ if (!businessId) {
143
+ throw new Error("businessId is required for product modifier operations");
144
+ }
145
+ return await client.businesses.productModifiers.deleteAsync(businessId, productId, modifierId, options, config);
146
+ },
147
+ onSuccess: (_, {
148
+ modifierId
149
+ }) => {
150
+ if (businessId) {
151
+ queryClient.invalidateQueries({
152
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId]
153
+ });
154
+ queryClient.invalidateQueries({
155
+ queryKey: [SBApiKeys.ProductModifiers, businessId, productId, modifierId]
156
+ });
157
+ }
158
+ }
159
+ });
160
+ }
161
+
162
+ export { useCreateProductModifierMutation, useDeleteProductModifierMutation, useGetProductModifierByIdQuery, useListProductModifiersInfiniteQuery, useUpdateProductModifierMutation };
163
+ //# sourceMappingURL=ModifiersAPI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ModifiersAPI.mjs","sources":["../../../../../../src/apis/business/products/modifiers/ModifiersAPI.tsx"],"sourcesContent":["import {\n\tProductModifierCreateRequest,\n\tProductModifierUpdateRequest,\n\tSBApiException,\n\tSBList,\n\tSBProductModifier,\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 { useBusinessId } from \"@/context\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\n\n/**\n * Hook to fetch a list of modifiers for a specific business and product with infinite scrolling\n * @param productId - The ID of the product\n * @param request - The pagination request parameters\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns An infinite query result containing paginated modifiers data\n */\nexport function useListProductModifiersInfiniteQuery(\n\tproductId: number,\n\trequest: { page?: number; pageSize?: number } = { page: 1, pageSize: 25 },\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(\n\t\t\t\"businessId is required for product modifier operations\",\n\t\t);\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBProductModifier>,\n\t\tSBApiException,\n\t\tSBList<SBProductModifier>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: request.page || 1,\n\t\tqueryKey: [\n\t\t\tSBApiKeys.ProductModifiers,\n\t\t\tbusinessId,\n\t\t\tproductId,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.productModifiers.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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 fetch a specific modifier by ID for a business and product\n * @param productId - The ID of the product\n * @param modifierId - The ID of the modifier to retrieve\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns A query result containing the modifier data\n */\nexport function useGetProductModifierByIdQuery(\n\tproductId: number,\n\tmodifierId: 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(\n\t\t\t\"businessId is required for product modifier operations\",\n\t\t);\n\t}\n\n\treturn useQuery<SBProductModifier, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.ProductModifiers,\n\t\t\tbusinessId,\n\t\t\tproductId,\n\t\t\tmodifierId,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\treturn await client.businesses.productModifiers.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\tmodifierId,\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 modifier for a product\n * @returns A mutation function to create a modifier\n */\nexport function useCreateProductModifierMutation(productId: number) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductModifier,\n\t\tSBApiException,\n\t\t{\n\t\t\tdata: ProductModifierCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<ProductModifierCreateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ data, 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 modifier operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productModifiers.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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.ProductModifiers,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\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 modifier for a product\n * @returns A mutation function to update a modifier\n */\nexport function useUpdateProductModifierMutation(productId: number) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductModifier,\n\t\tSBApiException,\n\t\t{\n\t\t\tmodifierId: number;\n\t\t\tdata: ProductModifierUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<ProductModifierUpdateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ modifierId, data, 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 modifier operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productModifiers.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\tmodifierId,\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: (_, { modifierId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.ProductModifiers,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\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.ProductModifiers,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\n\t\t\t\t\t\tmodifierId,\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 modifier for a product\n * @returns A mutation function to delete a modifier\n */\nexport function useDeleteProductModifierMutation(productId: number) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductModifier,\n\t\tSBApiException,\n\t\t{\n\t\t\tmodifierId: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ modifierId, 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 modifier operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productModifiers.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\tmodifierId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { modifierId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.ProductModifiers,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\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.ProductModifiers,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\n\t\t\t\t\t\tmodifierId,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n"],"names":["useListProductModifiersInfiniteQuery","productId","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","ProductModifiers","queryFn","pageParam","businesses","productModifiers","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetProductModifierByIdQuery","modifierId","useQuery","getByIdAsync","useCreateProductModifierMutation","queryClient","useMutation","mutationFn","data","createAsync","onSuccess","invalidateQueries","useUpdateProductModifierMutation","updateAsync","_","useDeleteProductModifierMutation","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 fetch a list of product options for a specific product using infinite query
7
+ * @param productId - The ID of the product
8
+ * @param request - The pagination request parameters
9
+ * @param options - Optional request options
10
+ * @param config - Optional Axios request configuration
11
+ * @returns An infinite query result containing paginated product options data
12
+ */
13
+ function useListProductOptionsInfiniteQuery(productId, request = {
14
+ page: 1,
15
+ pageSize: 25
16
+ }, options, config) {
17
+ const client = useApiClient();
18
+ useQueryClient();
19
+ const businessId = useBusinessId();
20
+ if (!businessId) {
21
+ throw new Error("businessId is required for product option operations");
22
+ }
23
+ return useInfiniteQuery({
24
+ initialPageParam: 1,
25
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId, request],
26
+ queryFn: async ({
27
+ pageParam = 1
28
+ }) => {
29
+ return await client.businesses.productOptions.listAsync(businessId, productId, {
30
+ ...request,
31
+ page: pageParam
32
+ }, options, config);
33
+ },
34
+ getNextPageParam: lastPage => {
35
+ if (lastPage.pagination.currentPage === lastPage.pagination.pageCount) {
36
+ return undefined;
37
+ }
38
+ return lastPage.pagination.currentPage + 1;
39
+ },
40
+ enabled: !!businessId && !!productId
41
+ });
42
+ }
43
+ /**
44
+ * Hook to fetch a specific product option by ID
45
+ * @param productId - The ID of the product
46
+ * @param optionId - The ID of the product option to retrieve
47
+ * @param options - Optional request options
48
+ * @param config - Optional Axios request configuration
49
+ * @returns A query result containing the product option data
50
+ */
51
+ function useGetProductOptionByIdQuery(productId, optionId, options, config) {
52
+ const client = useApiClient();
53
+ useQueryClient();
54
+ const businessId = useBusinessId();
55
+ if (!businessId) {
56
+ throw new Error("businessId is required for product option operations");
57
+ }
58
+ return useQuery({
59
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId, optionId],
60
+ queryFn: async () => await client.businesses.productOptions.getByIdAsync(businessId, productId, optionId, options, config),
61
+ enabled: !!businessId && !!productId && !!optionId
62
+ });
63
+ }
64
+ /**
65
+ * Hook to create a new product option
66
+ * @returns A mutation function to create a product option
67
+ */
68
+ function useCreateProductOptionMutation() {
69
+ const client = useApiClient();
70
+ const queryClient = useQueryClient();
71
+ const businessId = useBusinessId();
72
+ return useMutation({
73
+ mutationFn: async ({
74
+ productId,
75
+ request,
76
+ options,
77
+ config
78
+ }) => {
79
+ if (!businessId) {
80
+ throw new Error("businessId is required for product option operations");
81
+ }
82
+ return await client.businesses.productOptions.createAsync(businessId, productId, request, options, config);
83
+ },
84
+ onSuccess: (_, {
85
+ productId
86
+ }) => {
87
+ if (businessId) {
88
+ queryClient.invalidateQueries({
89
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId]
90
+ });
91
+ queryClient.invalidateQueries({
92
+ queryKey: [SBApiKeys.Products, businessId, productId]
93
+ });
94
+ }
95
+ }
96
+ });
97
+ }
98
+ /**
99
+ * Hook to update an existing product option
100
+ * @returns A mutation function to update a product option
101
+ */
102
+ function useUpdateProductOptionMutation() {
103
+ const client = useApiClient();
104
+ const queryClient = useQueryClient();
105
+ const businessId = useBusinessId();
106
+ return useMutation({
107
+ mutationFn: async ({
108
+ productId,
109
+ optionId,
110
+ request,
111
+ options,
112
+ config
113
+ }) => {
114
+ if (!businessId) {
115
+ throw new Error("businessId is required for product option operations");
116
+ }
117
+ return await client.businesses.productOptions.updateAsync(businessId, productId, optionId, request, options, config);
118
+ },
119
+ onSuccess: (_, {
120
+ productId,
121
+ optionId
122
+ }) => {
123
+ if (businessId) {
124
+ queryClient.invalidateQueries({
125
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId]
126
+ });
127
+ queryClient.invalidateQueries({
128
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId, optionId]
129
+ });
130
+ queryClient.invalidateQueries({
131
+ queryKey: [SBApiKeys.Products, businessId, productId]
132
+ });
133
+ }
134
+ }
135
+ });
136
+ }
137
+ /**
138
+ * Hook to delete a product option
139
+ * @returns A mutation function to delete a product option
140
+ */
141
+ function useDeleteProductOptionMutation() {
142
+ const client = useApiClient();
143
+ const queryClient = useQueryClient();
144
+ const businessId = useBusinessId();
145
+ return useMutation({
146
+ mutationFn: async ({
147
+ productId,
148
+ optionId,
149
+ options,
150
+ config
151
+ }) => {
152
+ if (!businessId) {
153
+ throw new Error("businessId is required for product option operations");
154
+ }
155
+ return await client.businesses.productOptions.deleteAsync(businessId, productId, optionId, options, config);
156
+ },
157
+ onSuccess: (_, {
158
+ productId,
159
+ optionId
160
+ }) => {
161
+ if (businessId) {
162
+ queryClient.invalidateQueries({
163
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId]
164
+ });
165
+ queryClient.invalidateQueries({
166
+ queryKey: [SBApiKeys.ProductOptions, businessId, productId, optionId]
167
+ });
168
+ queryClient.invalidateQueries({
169
+ queryKey: [SBApiKeys.Products, businessId, productId]
170
+ });
171
+ }
172
+ }
173
+ });
174
+ }
175
+
176
+ export { useCreateProductOptionMutation, useDeleteProductOptionMutation, useGetProductOptionByIdQuery, useListProductOptionsInfiniteQuery, useUpdateProductOptionMutation };
177
+ //# sourceMappingURL=ProductOptionsAPI.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductOptionsAPI.mjs","sources":["../../../../../../src/apis/business/products/options/ProductOptionsAPI.tsx"],"sourcesContent":["import {\n\tSBRequestOptions,\n\tSBApiException,\n\tSBProductOption,\n\tProductOptionCreateRequest,\n\tProductOptionUpdateRequest,\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} from \"@tanstack/react-query\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { useBusinessId } from \"@/context\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\n\n/**\n * Hook to fetch a list of product options for a specific product using infinite query\n * @param productId - The ID of the product\n * @param request - The pagination request parameters\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns An infinite query result containing paginated product options data\n */\nexport function useListProductOptionsInfiniteQuery(\n\tproductId: number,\n\trequest: { page?: number; pageSize?: number } = { page: 1, pageSize: 25 },\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 product option operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBProductOption>,\n\t\tSBApiException,\n\t\tSBList<SBProductOption>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: 1,\n\t\tqueryKey: [SBApiKeys.ProductOptions, businessId, productId, request],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.productOptions.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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 ===\n\t\t\t\tlastPage.pagination.pageCount\n\t\t\t) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\treturn lastPage.pagination.currentPage + 1;\n\t\t},\n\t\tenabled: !!businessId && !!productId,\n\t});\n}\n\n/**\n * Hook to fetch a specific product option by ID\n * @param productId - The ID of the product\n * @param optionId - The ID of the product option to retrieve\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns A query result containing the product option data\n */\nexport function useGetProductOptionByIdQuery(\n\tproductId: number,\n\toptionId: 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 product option operations\");\n\t}\n\n\treturn useQuery<SBProductOption, SBApiException>({\n\t\tqueryKey: [SBApiKeys.ProductOptions, businessId, productId, optionId],\n\t\tqueryFn: async () =>\n\t\t\tawait client.businesses.productOptions.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\toptionId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t),\n\t\tenabled: !!businessId && !!productId && !!optionId,\n\t});\n}\n\n/**\n * Hook to create a new product option\n * @returns A mutation function to create a product option\n */\nexport function useCreateProductOptionMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductOption,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\trequest: Omit<SBProductOption, \"id\" | \"createdAt\" | \"updatedAt\">;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ productId, 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 option operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productOptions.createAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\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: (_, { productId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.ProductOptions, businessId, productId],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.Products, businessId, productId],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Hook to update an existing product option\n * @returns A mutation function to update a product option\n */\nexport function useUpdateProductOptionMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductOption,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\toptionId: number;\n\t\t\trequest: Partial<SBProductOption>;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({\n\t\t\tproductId,\n\t\t\toptionId,\n\t\t\trequest,\n\t\t\toptions,\n\t\t\tconfig,\n\t\t}) => {\n\t\t\tif (!businessId) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"businessId is required for product option operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productOptions.updateAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\toptionId,\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: (_, { productId, optionId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.ProductOptions, businessId, productId],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.ProductOptions,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\n\t\t\t\t\t\toptionId,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.Products, businessId, productId],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n\n/**\n * Hook to delete a product option\n * @returns A mutation function to delete a product option\n */\nexport function useDeleteProductOptionMutation() {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBProductOption,\n\t\tSBApiException,\n\t\t{\n\t\t\tproductId: number;\n\t\t\toptionId: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ productId, optionId, 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 option operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.productOptions.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tproductId,\n\t\t\t\toptionId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { productId, optionId }) => {\n\t\t\tif (businessId) {\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.ProductOptions, businessId, productId],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [\n\t\t\t\t\t\tSBApiKeys.ProductOptions,\n\t\t\t\t\t\tbusinessId,\n\t\t\t\t\t\tproductId,\n\t\t\t\t\t\toptionId,\n\t\t\t\t\t],\n\t\t\t\t});\n\t\t\t\tqueryClient.invalidateQueries({\n\t\t\t\t\tqueryKey: [SBApiKeys.Products, businessId, productId],\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t});\n}\n"],"names":["useListProductOptionsInfiniteQuery","productId","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","ProductOptions","queryFn","pageParam","businesses","productOptions","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetProductOptionByIdQuery","optionId","useQuery","getByIdAsync","useCreateProductOptionMutation","queryClient","useMutation","mutationFn","createAsync","onSuccess","_","invalidateQueries","Products","useUpdateProductOptionMutation","updateAsync","useDeleteProductOptionMutation","deleteAsync"],"mappings":"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"}