@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,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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"}