@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,172 @@
1
+ 'use strict';
2
+
3
+ var ApiContext = require('../../context/ApiContext.cjs');
4
+ var reactQuery = require('@tanstack/react-query');
5
+ var SBApiKeys = require('../SBApiKeys.cjs');
6
+
7
+ /**
8
+ * Hook for listing business with infinite pagination
9
+ * @param request - Request parameters for listing business
10
+ * @param options - Optional request options
11
+ * @param config - Optional Axios request configuration
12
+ * @returns Infinite query result for implementing infinite scrolling with business data
13
+ */
14
+ function useListBusinessInfiniteQuery(request = {
15
+ page: 1,
16
+ pageSize: 25
17
+ }, options, config) {
18
+ const client = ApiContext.useApiClient();
19
+ reactQuery.useQueryClient();
20
+ return reactQuery.useInfiniteQuery({
21
+ initialPageParam: request.page || 1,
22
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, request, options],
23
+ queryFn: async ({
24
+ pageParam = 1
25
+ }) => {
26
+ return await client.businesses.listAsync({
27
+ ...request,
28
+ page: pageParam
29
+ }, options, config);
30
+ },
31
+ getNextPageParam: lastPage => {
32
+ if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
33
+ return lastPage.pagination.currentPage + 1;
34
+ }
35
+ return undefined;
36
+ }
37
+ });
38
+ }
39
+ /**
40
+ * Hook for retrieving a business by ID
41
+ * @param id - The ID of the business to retrieve
42
+ * @param options - Optional request options
43
+ * @param config - Optional Axios request configuration
44
+ * @returns Query result containing the business data
45
+ */
46
+ const useGetBusinessByIdQuery = (id, options, config) => {
47
+ const client = ApiContext.useApiClient();
48
+ reactQuery.useQueryClient();
49
+ const currentBusinessId = ApiContext.useBusinessId();
50
+ return reactQuery.useQuery({
51
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, id, options],
52
+ queryFn: async () => await client.businesses.getByIdAsync(id, options, config),
53
+ // If we're requesting the current business, only enable when businessId is set
54
+ enabled: id === currentBusinessId ? !!currentBusinessId : true
55
+ });
56
+ };
57
+ /**
58
+ * Hook for creating a new business
59
+ * @returns Mutation function for creating business
60
+ */
61
+ const useCreateBusinessMutation = () => {
62
+ const client = ApiContext.useApiClient();
63
+ const queryClient = reactQuery.useQueryClient();
64
+ return reactQuery.useMutation({
65
+ mutationFn: async ({
66
+ request,
67
+ options,
68
+ config
69
+ }) => {
70
+ return await client.businesses.createAsync(request, options, config);
71
+ },
72
+ onSuccess: () => {
73
+ queryClient.invalidateQueries({
74
+ queryKey: [SBApiKeys.SBApiKeys.Businesses]
75
+ });
76
+ }
77
+ });
78
+ };
79
+ /**
80
+ * Hook for updating an existing business
81
+ * @returns Mutation function for updating business
82
+ */
83
+ const useUpdateBusinessMutation = () => {
84
+ const client = ApiContext.useApiClient();
85
+ const queryClient = reactQuery.useQueryClient();
86
+ const currentBusinessId = ApiContext.useBusinessId();
87
+ return reactQuery.useMutation({
88
+ mutationFn: async ({
89
+ businessId,
90
+ request,
91
+ options,
92
+ config
93
+ }) => {
94
+ return await client.businesses.updateAsync(businessId, request, options, config);
95
+ },
96
+ onSuccess: (_, {
97
+ businessId
98
+ }) => {
99
+ queryClient.invalidateQueries({
100
+ queryKey: [SBApiKeys.SBApiKeys.Businesses]
101
+ });
102
+ queryClient.invalidateQueries({
103
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId]
104
+ });
105
+ // If updating the current business, invalidate any queries that depend on it
106
+ if (businessId === currentBusinessId) {
107
+ queryClient.invalidateQueries();
108
+ }
109
+ }
110
+ });
111
+ };
112
+ /**
113
+ * Hook for deleting a business
114
+ * @returns Mutation function for deleting business
115
+ */
116
+ const useDeleteBusinessMutation = () => {
117
+ const client = ApiContext.useApiClient();
118
+ const queryClient = reactQuery.useQueryClient();
119
+ const currentBusinessId = ApiContext.useBusinessId();
120
+ return reactQuery.useMutation({
121
+ mutationFn: async ({
122
+ businessId,
123
+ options,
124
+ config
125
+ }) => {
126
+ return await client.businesses.deleteAsync(businessId, options, config);
127
+ },
128
+ onSuccess: (_, {
129
+ businessId
130
+ }) => {
131
+ queryClient.invalidateQueries({
132
+ queryKey: [SBApiKeys.SBApiKeys.Businesses]
133
+ });
134
+ // If deleting the current business, invalidate all queries
135
+ if (businessId === currentBusinessId) {
136
+ queryClient.invalidateQueries();
137
+ }
138
+ }
139
+ });
140
+ };
141
+ /**
142
+ * Hook for batch inviting members to a business
143
+ */
144
+ const useBatchInviteMemberMutation = () => {
145
+ const client = ApiContext.useApiClient();
146
+ const queryClient = reactQuery.useQueryClient();
147
+ return reactQuery.useMutation({
148
+ mutationFn: async ({
149
+ businessId,
150
+ invitations,
151
+ options,
152
+ config
153
+ }) => {
154
+ return await client.businesses.batchInviteMemberAsync(businessId, invitations, options, config);
155
+ },
156
+ onSuccess: (_, {
157
+ businessId
158
+ }) => {
159
+ queryClient.invalidateQueries({
160
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, "members"]
161
+ });
162
+ }
163
+ });
164
+ };
165
+
166
+ exports.useBatchInviteMemberMutation = useBatchInviteMemberMutation;
167
+ exports.useCreateBusinessMutation = useCreateBusinessMutation;
168
+ exports.useDeleteBusinessMutation = useDeleteBusinessMutation;
169
+ exports.useGetBusinessByIdQuery = useGetBusinessByIdQuery;
170
+ exports.useListBusinessInfiniteQuery = useListBusinessInfiniteQuery;
171
+ exports.useUpdateBusinessMutation = useUpdateBusinessMutation;
172
+ //# sourceMappingURL=BusinessAPI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BusinessAPI.cjs","sources":["../../../../src/apis/business/BusinessAPI.tsx"],"sourcesContent":["import {\n\tBusinessCreateRequest,\n\tBusinessListRequest,\n\tSBBusiness,\n\tBusinessUpdateRequest,\n\tSBRequestOptions,\n\tSBApiException,\n\tSBList,\n\tBusinessInvitationRequest,\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\n/**\n * Hook for listing business with infinite pagination\n * @param request - Request parameters for listing business\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns Infinite query result for implementing infinite scrolling with business data\n */\nexport function useListBusinessInfiniteQuery(\n\trequest: BusinessListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<BusinessListRequest>,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBBusiness>,\n\t\tSBApiException,\n\t\tInfiniteData<SBList<SBBusiness>>,\n\t\tQueryKey,\n\t\tnumber\n\t>({\n\t\tinitialPageParam: request.page || 1,\n\t\tqueryKey: [SBApiKeys.Businesses, request, options],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.listAsync(\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});\n}\n\n/**\n * Hook for retrieving a business by ID\n * @param id - The ID of the business to retrieve\n * @param options - Optional request options\n * @param config - Optional Axios request configuration\n * @returns Query result containing the business data\n */\nexport const useGetBusinessByIdQuery = (\n\tid: number,\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig,\n) => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst currentBusinessId = useBusinessId();\n\n\treturn useQuery<SBBusiness, SBApiException>({\n\t\tqueryKey: [SBApiKeys.Businesses, id, options],\n\t\tqueryFn: async () =>\n\t\t\tawait client.businesses.getByIdAsync(id, options, config),\n\t\t// If we're requesting the current business, only enable when businessId is set\n\t\tenabled: id === currentBusinessId ? !!currentBusinessId : true,\n\t});\n};\n\n/**\n * Hook for creating a new business\n * @returns Mutation function for creating business\n */\nexport const useCreateBusinessMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\treturn useMutation<\n\t\tSBBusiness,\n\t\tSBApiException,\n\t\t{\n\t\t\trequest: BusinessCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<BusinessCreateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ request, options, config }) => {\n\t\t\treturn await client.businesses.createAsync(\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: [SBApiKeys.Businesses],\n\t\t\t});\n\t\t},\n\t});\n};\n\n/**\n * Hook for updating an existing business\n * @returns Mutation function for updating business\n */\nexport const useUpdateBusinessMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst currentBusinessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBBusiness,\n\t\tSBApiException,\n\t\t{\n\t\t\tbusinessId: number;\n\t\t\trequest: BusinessUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<BusinessUpdateRequest>;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ businessId, request, options, config }) => {\n\t\t\treturn await client.businesses.updateAsync(\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: (_, { businessId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [SBApiKeys.Businesses],\n\t\t\t});\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [SBApiKeys.Businesses, businessId],\n\t\t\t});\n\n\t\t\t// If updating the current business, invalidate any queries that depend on it\n\t\t\tif (businessId === currentBusinessId) {\n\t\t\t\tqueryClient.invalidateQueries();\n\t\t\t}\n\t\t},\n\t});\n};\n\n/**\n * Hook for deleting a business\n * @returns Mutation function for deleting business\n */\nexport const useDeleteBusinessMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst currentBusinessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBBusiness,\n\t\tSBApiException,\n\t\t{\n\t\t\tbusinessId: number;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ businessId, options, config }) => {\n\t\t\treturn await client.businesses.deleteAsync(\n\t\t\t\tbusinessId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { businessId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [SBApiKeys.Businesses],\n\t\t\t});\n\n\t\t\t// If deleting the current business, invalidate all queries\n\t\t\tif (businessId === currentBusinessId) {\n\t\t\t\tqueryClient.invalidateQueries();\n\t\t\t}\n\t\t},\n\t});\n};\n\n/**\n * Hook for batch inviting members to a business\n */\nexport const useBatchInviteMemberMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\treturn useMutation<\n\t\tany,\n\t\tSBApiException,\n\t\t{\n\t\t\tbusinessId: number;\n\t\t\tinvitations: BusinessInvitationRequest[];\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig;\n\t\t}\n\t>({\n\t\tmutationFn: async ({ businessId, invitations, options, config }) => {\n\t\t\treturn await client.businesses.batchInviteMemberAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tinvitations,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tonSuccess: (_, { businessId }) => {\n\t\t\tqueryClient.invalidateQueries({\n\t\t\t\tqueryKey: [SBApiKeys.Businesses, businessId, \"members\"],\n\t\t\t});\n\t\t},\n\t});\n};\n"],"names":["useListBusinessInfiniteQuery","request","page","pageSize","options","config","client","useApiClient","useQueryClient","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","queryFn","pageParam","businesses","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","useGetBusinessByIdQuery","id","currentBusinessId","useBusinessId","useQuery","getByIdAsync","enabled","useCreateBusinessMutation","queryClient","useMutation","mutationFn","createAsync","onSuccess","invalidateQueries","useUpdateBusinessMutation","businessId","updateAsync","_","useDeleteBusinessMutation","deleteAsync","useBatchInviteMemberMutation","invitations","batchInviteMemberAsync"],"mappings":"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"}
@@ -0,0 +1,161 @@
1
+ 'use strict';
2
+
3
+ var ApiContext = require('../../../context/ApiContext.cjs');
4
+ var reactQuery = require('@tanstack/react-query');
5
+ var SBApiKeys = require('../../SBApiKeys.cjs');
6
+
7
+ /**
8
+ * Hook to list customers with infinite scrolling
9
+ * @param request - The list request parameters
10
+ * @param options - Optional request options
11
+ * @param config - Optional axios request config
12
+ * @returns Infinite query result containing the paginated customers
13
+ */
14
+ function useListCustomersInfiniteQuery(request = {
15
+ page: 1,
16
+ pageSize: 25
17
+ }, options, config) {
18
+ const client = ApiContext.useApiClient();
19
+ reactQuery.useQueryClient();
20
+ const businessId = ApiContext.useBusinessId();
21
+ if (!businessId) {
22
+ throw new Error("businessId is required for customer operations");
23
+ }
24
+ return reactQuery.useInfiniteQuery({
25
+ initialPageParam: request.page || 1,
26
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, request, options],
27
+ queryFn: async ({
28
+ pageParam = 1
29
+ }) => {
30
+ return await client.businesses.customers.listAsync(businessId, {
31
+ ...request,
32
+ page: pageParam
33
+ }, options, config);
34
+ },
35
+ getNextPageParam: lastPage => {
36
+ if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
37
+ return lastPage.pagination.currentPage + 1;
38
+ }
39
+ return undefined;
40
+ },
41
+ enabled: !!businessId
42
+ });
43
+ }
44
+ /**
45
+ * Hook to get a customer by ID
46
+ * @param id - The customer ID
47
+ * @param options - Optional request options
48
+ * @param config - Optional axios request config
49
+ * @returns Query result containing the customer data
50
+ */
51
+ const useGetCustomerByIdQuery = (id, options, config) => {
52
+ const client = ApiContext.useApiClient();
53
+ reactQuery.useQueryClient();
54
+ const businessId = ApiContext.useBusinessId();
55
+ if (!businessId) {
56
+ throw new Error("businessId is required for customer operations");
57
+ }
58
+ return reactQuery.useQuery({
59
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, id, options],
60
+ queryFn: async () => {
61
+ return await client.businesses.customers.getByIdAsync(businessId, id, options, config);
62
+ },
63
+ enabled: !!businessId
64
+ });
65
+ };
66
+ /**
67
+ * Hook to create a new customer
68
+ * @returns Mutation function to create a customer
69
+ */
70
+ const useCreateCustomerMutation = () => {
71
+ const client = ApiContext.useApiClient();
72
+ const queryClient = reactQuery.useQueryClient();
73
+ const businessId = ApiContext.useBusinessId();
74
+ return reactQuery.useMutation({
75
+ mutationFn: async ({
76
+ request,
77
+ options,
78
+ config
79
+ }) => {
80
+ if (!businessId) {
81
+ throw new Error("businessId is required for customer operations");
82
+ }
83
+ return await client.businesses.customers.createAsync(businessId, request, options, config);
84
+ },
85
+ onSuccess: () => {
86
+ queryClient.invalidateQueries({
87
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers]
88
+ });
89
+ }
90
+ });
91
+ };
92
+ /**
93
+ * Hook to update a customer
94
+ * @returns Mutation function for updating customers
95
+ */
96
+ const useUpdateCustomerMutation = () => {
97
+ const client = ApiContext.useApiClient();
98
+ const queryClient = reactQuery.useQueryClient();
99
+ const businessId = ApiContext.useBusinessId();
100
+ return reactQuery.useMutation({
101
+ mutationFn: async ({
102
+ id,
103
+ request,
104
+ options,
105
+ config
106
+ }) => {
107
+ if (!businessId) {
108
+ throw new Error("businessId is required for customer operations");
109
+ }
110
+ return await client.businesses.customers.updateAsync(businessId, id, request, options, config);
111
+ },
112
+ onSuccess: (_, {
113
+ id
114
+ }) => {
115
+ queryClient.invalidateQueries({
116
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers]
117
+ });
118
+ queryClient.invalidateQueries({
119
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, id]
120
+ });
121
+ }
122
+ });
123
+ };
124
+ /**
125
+ * Hook to delete a customer
126
+ * @returns Mutation function for deleting customers
127
+ */
128
+ const useDeleteCustomerMutation = () => {
129
+ const client = ApiContext.useApiClient();
130
+ const queryClient = reactQuery.useQueryClient();
131
+ const businessId = ApiContext.useBusinessId();
132
+ return reactQuery.useMutation({
133
+ mutationFn: async ({
134
+ id,
135
+ options,
136
+ config
137
+ }) => {
138
+ if (!businessId) {
139
+ throw new Error("businessId is required for customer operations");
140
+ }
141
+ await client.businesses.customers.deleteAsync(businessId, id, options, config);
142
+ },
143
+ onSuccess: (_, {
144
+ id
145
+ }) => {
146
+ queryClient.invalidateQueries({
147
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers]
148
+ });
149
+ queryClient.invalidateQueries({
150
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, id]
151
+ });
152
+ }
153
+ });
154
+ };
155
+
156
+ exports.useCreateCustomerMutation = useCreateCustomerMutation;
157
+ exports.useDeleteCustomerMutation = useDeleteCustomerMutation;
158
+ exports.useGetCustomerByIdQuery = useGetCustomerByIdQuery;
159
+ exports.useListCustomersInfiniteQuery = useListCustomersInfiniteQuery;
160
+ exports.useUpdateCustomerMutation = useUpdateCustomerMutation;
161
+ //# sourceMappingURL=CustomerAPI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomerAPI.cjs","sources":["../../../../../src/apis/business/customers/CustomerAPI.ts"],"sourcesContent":["import {\n\tCustomerListRequest,\n\tSBCustomer,\n\tCustomerCreateRequest,\n\tCustomerUpdateRequest,\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 { SBApiKeys } from \"@/apis/SBApiKeys\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { useBusinessId } from \"@/context\";\n\n/**\n * Hook to list customers 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 customers\n */\nexport function useListCustomersInfiniteQuery(\n\trequest: CustomerListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<CustomerListRequest>,\n) {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\tif (!businessId) {\n\t\tthrow new Error(\"businessId is required for customer operations\");\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBCustomer>,\n\t\tSBApiException,\n\t\tInfiniteData<SBList<SBCustomer>>,\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.Customers,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.customers.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 customer by ID\n * @param id - The customer ID\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Query result containing the customer data\n */\nexport const useGetCustomerByIdQuery = (\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 customer operations\");\n\t}\n\n\treturn useQuery<SBCustomer, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Customers,\n\t\t\tid,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\treturn await client.businesses.customers.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\tenabled: !!businessId,\n\t});\n};\n\n/**\n * Hook to create a new customer\n * @returns Mutation function to create a customer\n */\nexport const useCreateCustomerMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBCustomer,\n\t\tSBApiException,\n\t\t{\n\t\t\trequest: CustomerCreateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<CustomerCreateRequest>;\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 customer operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.customers.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.Customers,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n};\n\n/**\n * Hook to update a customer\n * @returns Mutation function for updating customers\n */\nexport const useUpdateCustomerMutation = () => {\n\tconst client = useApiClient();\n\tconst queryClient = useQueryClient();\n\tconst businessId = useBusinessId();\n\n\treturn useMutation<\n\t\tSBCustomer,\n\t\tSBApiException,\n\t\t{\n\t\t\tid: number;\n\t\t\trequest: CustomerUpdateRequest;\n\t\t\toptions?: SBRequestOptions;\n\t\t\tconfig?: AxiosRequestConfig<CustomerUpdateRequest>;\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 customer operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await client.businesses.customers.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.Customers,\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.Customers,\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 delete a customer\n * @returns Mutation function for deleting customers\n */\nexport const useDeleteCustomerMutation = () => {\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 customer operations\",\n\t\t\t\t);\n\t\t\t}\n\t\t\tawait client.businesses.customers.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.Customers,\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.Customers,\n\t\t\t\t\tid,\n\t\t\t\t],\n\t\t\t});\n\t\t},\n\t});\n};\n"],"names":["useListCustomersInfiniteQuery","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","Customers","queryFn","pageParam","businesses","customers","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetCustomerByIdQuery","id","useQuery","getByIdAsync","useCreateCustomerMutation","queryClient","useMutation","mutationFn","createAsync","onSuccess","invalidateQueries","useUpdateCustomerMutation","updateAsync","_","useDeleteCustomerMutation","deleteAsync"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ 'use strict';
2
+
3
+ var ApiContext = require('../../../context/ApiContext.cjs');
4
+ var reactQuery = require('@tanstack/react-query');
5
+ var SBApiKeys = require('../../SBApiKeys.cjs');
6
+
7
+ /**
8
+ * Hook to list balance transactions for a customer with infinite scrolling
9
+ * @param customerId - The customer ID
10
+ * @param request - The list request parameters
11
+ * @param options - Optional request options
12
+ * @param config - Optional axios request config
13
+ * @returns Query result containing the customer balance transactions
14
+ */
15
+ const useListCustomerBalanceTransactionsInfiniteQuery = (customerId, request = {
16
+ page: 1,
17
+ pageSize: 25
18
+ }, options, config) => {
19
+ const client = ApiContext.useApiClient();
20
+ reactQuery.useQueryClient();
21
+ const businessId = ApiContext.useBusinessId();
22
+ if (!businessId) {
23
+ throw new Error("businessId is required for customer balance transaction operations");
24
+ }
25
+ return reactQuery.useInfiniteQuery({
26
+ initialPageParam: request.page || 1,
27
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerBalanceTransactions, request, options],
28
+ queryFn: async ({
29
+ pageParam = 1
30
+ }) => {
31
+ return await client.businesses.customerBalanceTransactions.listAsync(businessId, customerId, {
32
+ ...request,
33
+ page: pageParam
34
+ }, options, config);
35
+ },
36
+ getNextPageParam: lastPage => {
37
+ if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
38
+ return lastPage.pagination.currentPage + 1;
39
+ }
40
+ return undefined;
41
+ },
42
+ enabled: !!businessId && !!customerId
43
+ });
44
+ };
45
+ /**
46
+ * Hook to get a specific balance transaction for a customer
47
+ * @param customerId - The customer ID
48
+ * @param transactionId - The balance transaction ID
49
+ * @param options - Optional request options
50
+ * @param config - Optional axios request config
51
+ * @returns Query result containing the customer balance transaction
52
+ */
53
+ const useGetCustomerBalanceTransactionByIdQuery = (customerId, transactionId, options, config) => {
54
+ const client = ApiContext.useApiClient();
55
+ reactQuery.useQueryClient();
56
+ const businessId = ApiContext.useBusinessId();
57
+ if (!businessId) {
58
+ throw new Error("businessId is required for customer balance transaction operations");
59
+ }
60
+ return reactQuery.useQuery({
61
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerBalanceTransactions, transactionId, options],
62
+ queryFn: async () => {
63
+ return await client.businesses.customerBalanceTransactions.getByIdAsync(businessId, customerId, transactionId, options, config);
64
+ },
65
+ enabled: !!businessId && !!customerId && !!transactionId
66
+ });
67
+ };
68
+
69
+ exports.useGetCustomerBalanceTransactionByIdQuery = useGetCustomerBalanceTransactionByIdQuery;
70
+ exports.useListCustomerBalanceTransactionsInfiniteQuery = useListCustomerBalanceTransactionsInfiniteQuery;
71
+ //# sourceMappingURL=CustomerBalanceTransactionsAPI.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CustomerBalanceTransactionsAPI.cjs","sources":["../../../../../src/apis/business/customers/CustomerBalanceTransactionsAPI.ts"],"sourcesContent":["import {\n\tSBList,\n\tSBRequestOptions,\n\tCustomerBalanceTransactionListRequest,\n\tSBCustomerBalanceTransaction,\n\tSBApiException,\n} from \"@smartbills/sdk\";\n\nimport { useApiClient } from \"@/context\";\nimport {\n\tQueryKey,\n\tuseInfiniteQuery,\n\tuseQuery,\n\tuseQueryClient,\n} from \"@tanstack/react-query\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { SBApiKeys } from \"@/apis/SBApiKeys\";\nimport { useBusinessId } from \"@/context\";\n\n/**\n * Hook to list balance transactions for a customer with infinite scrolling\n * @param customerId - The customer ID\n * @param request - The list request parameters\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Query result containing the customer balance transactions\n */\nexport const useListCustomerBalanceTransactionsInfiniteQuery = (\n\tcustomerId: number,\n\trequest: CustomerBalanceTransactionListRequest = { page: 1, pageSize: 25 },\n\toptions?: SBRequestOptions,\n\tconfig?: AxiosRequestConfig<CustomerBalanceTransactionListRequest>,\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 customer balance transaction operations\",\n\t\t);\n\t}\n\n\treturn useInfiniteQuery<\n\t\tSBList<SBCustomerBalanceTransaction>,\n\t\tSBApiException,\n\t\tSBList<SBCustomerBalanceTransaction>,\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.Customers,\n\t\t\tcustomerId,\n\t\t\tSBApiKeys.CustomerBalanceTransactions,\n\t\t\trequest,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async ({ pageParam = 1 }) => {\n\t\t\treturn await client.businesses.customerBalanceTransactions.listAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tcustomerId,\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 && !!customerId,\n\t});\n};\n\n/**\n * Hook to get a specific balance transaction for a customer\n * @param customerId - The customer ID\n * @param transactionId - The balance transaction ID\n * @param options - Optional request options\n * @param config - Optional axios request config\n * @returns Query result containing the customer balance transaction\n */\nexport const useGetCustomerBalanceTransactionByIdQuery = (\n\tcustomerId: number,\n\ttransactionId: 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 customer balance transaction operations\",\n\t\t);\n\t}\n\n\treturn useQuery<SBCustomerBalanceTransaction, SBApiException>({\n\t\tqueryKey: [\n\t\t\tSBApiKeys.Businesses,\n\t\t\tbusinessId,\n\t\t\tSBApiKeys.Customers,\n\t\t\tcustomerId,\n\t\t\tSBApiKeys.CustomerBalanceTransactions,\n\t\t\ttransactionId,\n\t\t\toptions,\n\t\t],\n\t\tqueryFn: async () => {\n\t\t\treturn await client.businesses.customerBalanceTransactions.getByIdAsync(\n\t\t\t\tbusinessId,\n\t\t\t\tcustomerId,\n\t\t\t\ttransactionId,\n\t\t\t\toptions,\n\t\t\t\tconfig,\n\t\t\t);\n\t\t},\n\t\tenabled: !!businessId && !!customerId && !!transactionId,\n\t});\n};\n"],"names":["useListCustomerBalanceTransactionsInfiniteQuery","customerId","request","page","pageSize","options","config","client","useApiClient","useQueryClient","businessId","useBusinessId","Error","useInfiniteQuery","initialPageParam","queryKey","SBApiKeys","Businesses","Customers","CustomerBalanceTransactions","queryFn","pageParam","businesses","customerBalanceTransactions","listAsync","getNextPageParam","lastPage","pagination","currentPage","pageCount","undefined","enabled","useGetCustomerBalanceTransactionByIdQuery","transactionId","useQuery","getByIdAsync"],"mappings":";;;;;;AAmBA;;;;;;;AAOG;MACUA,+CAA+C,GAAGA,CAC9DC,UAAkB,EAClBC,OAAiD,GAAA;AAAEC,EAAAA,IAAI,EAAE,CAAC;AAAEC,EAAAA,QAAQ,EAAE;AAAE,CAAE,EAC1EC,OAA0B,EAC1BC,MAAkE,KAC/D;AACH,EAAA,MAAMC,MAAM,GAAGC,uBAAY,EAAE;AAC7B,EAAoBC,yBAAc;AAClC,EAAA,MAAMC,UAAU,GAAGC,wBAAa,EAAE;EAElC,IAAI,CAACD,UAAU,EAAE;AAChB,IAAA,MAAM,IAAIE,KAAK,CACd,oEAAoE,CACpE;AACF;AAEA,EAAA,OAAOC,2BAAgB,CAMrB;AACDC,IAAAA,gBAAgB,EAAEZ,OAAO,CAACC,IAAI,IAAI,CAAC;IACnCY,QAAQ,EAAE,CACTC,mBAAS,CAACC,UAAU,EACpBP,UAAU,EACVM,mBAAS,CAACE,SAAS,EACnBjB,UAAU,EACVe,mBAAS,CAACG,2BAA2B,EACrCjB,OAAO,EACPG,OAAO,CACP;IACDe,OAAO,EAAE,OAAO;AAAEC,MAAAA,SAAS,GAAG;AAAG,KAAA,KAAI;AACpC,MAAA,OAAO,MAAMd,MAAM,CAACe,UAAU,CAACC,2BAA2B,CAACC,SAAS,CACnEd,UAAU,EACVT,UAAU,EACV;AAAE,QAAA,GAAGC,OAAO;AAAEC,QAAAA,IAAI,EAAEkB;AAAW,OAAA,EAC/BhB,OAAO,EACPC,MAAM,CACN;KACD;IACDmB,gBAAgB,EAAGC,QAAQ,IAAI;MAC9B,IACCA,QAAQ,CAACC,UAAU,CAACC,WAAW,GAAGF,QAAQ,CAACC,UAAU,CAACE,SAAS,EAC9D;AACD,QAAA,OAAOH,QAAQ,CAACC,UAAU,CAACC,WAAW,GAAG,CAAC;AAC3C;AACA,MAAA,OAAOE,SAAS;KAChB;AACDC,IAAAA,OAAO,EAAE,CAAC,CAACrB,UAAU,IAAI,CAAC,CAACT;AAC3B,GAAA,CAAC;AACH;AAEA;;;;;;;AAOG;AACI,MAAM+B,yCAAyC,GAAGA,CACxD/B,UAAkB,EAClBgC,aAAqB,EACrB5B,OAA0B,EAC1BC,MAA2B,KACxB;AACH,EAAA,MAAMC,MAAM,GAAGC,uBAAY,EAAE;AAC7B,EAAoBC,yBAAc;AAClC,EAAA,MAAMC,UAAU,GAAGC,wBAAa,EAAE;EAElC,IAAI,CAACD,UAAU,EAAE;AAChB,IAAA,MAAM,IAAIE,KAAK,CACd,oEAAoE,CACpE;AACF;AAEA,EAAA,OAAOsB,mBAAQ,CAA+C;IAC7DnB,QAAQ,EAAE,CACTC,mBAAS,CAACC,UAAU,EACpBP,UAAU,EACVM,mBAAS,CAACE,SAAS,EACnBjB,UAAU,EACVe,mBAAS,CAACG,2BAA2B,EACrCc,aAAa,EACb5B,OAAO,CACP;IACDe,OAAO,EAAE,YAAW;AACnB,MAAA,OAAO,MAAMb,MAAM,CAACe,UAAU,CAACC,2BAA2B,CAACY,YAAY,CACtEzB,UAAU,EACVT,UAAU,EACVgC,aAAa,EACb5B,OAAO,EACPC,MAAM,CACN;KACD;IACDyB,OAAO,EAAE,CAAC,CAACrB,UAAU,IAAI,CAAC,CAACT,UAAU,IAAI,CAAC,CAACgC;AAC3C,GAAA,CAAC;AACH;;;;;"}
@@ -0,0 +1,176 @@
1
+ 'use strict';
2
+
3
+ var ApiContext = require('../../../context/ApiContext.cjs');
4
+ var reactQuery = require('@tanstack/react-query');
5
+ var SBApiKeys = require('../../SBApiKeys.cjs');
6
+
7
+ /**
8
+ * Hook to list a customer's payment methods with infinite query
9
+ * @param customerId - The customer ID
10
+ * @param request - Request parameters for listing payment methods
11
+ * @param options - Optional request options
12
+ * @param config - Optional axios request config
13
+ * @returns Infinite query result containing the customer's payment methods
14
+ */
15
+ const useListCustomerPaymentMethodsInfiniteQuery = (customerId, request = {
16
+ page: 1,
17
+ pageSize: 25
18
+ }, options, config) => {
19
+ const client = ApiContext.useApiClient();
20
+ reactQuery.useQueryClient();
21
+ const businessId = ApiContext.useBusinessId();
22
+ if (!businessId) {
23
+ throw new Error("businessId is required for customer payment method operations");
24
+ }
25
+ return reactQuery.useInfiniteQuery({
26
+ initialPageParam: request.page || 1,
27
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods, request],
28
+ queryFn: async ({
29
+ pageParam = 1
30
+ }) => {
31
+ return await client.businesses.customerPaymentMethods.listAsync(businessId, customerId, {
32
+ ...request,
33
+ page: pageParam
34
+ }, options, config);
35
+ },
36
+ getNextPageParam: lastPage => {
37
+ if (lastPage.pagination.currentPage < lastPage.pagination.pageCount) {
38
+ return lastPage.pagination.currentPage + 1;
39
+ }
40
+ return undefined;
41
+ },
42
+ enabled: !!businessId && !!customerId
43
+ });
44
+ };
45
+ /**
46
+ * Hook to get a specific payment method for a customer
47
+ * @param customerId - The customer ID
48
+ * @param id - The payment method ID
49
+ * @param options - Optional request options
50
+ * @param config - Optional axios request config
51
+ * @returns Query result containing the payment method
52
+ */
53
+ const useGetCustomerPaymentMethodByIdQuery = (customerId, id, options, config) => {
54
+ const client = ApiContext.useApiClient();
55
+ reactQuery.useQueryClient();
56
+ const businessId = ApiContext.useBusinessId();
57
+ if (!businessId) {
58
+ throw new Error("businessId is required for customer payment method operations");
59
+ }
60
+ return reactQuery.useQuery({
61
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods, id, options],
62
+ queryFn: async () => {
63
+ return await client.businesses.customerPaymentMethods.getByIdAsync(businessId, customerId, id, options, config);
64
+ },
65
+ enabled: !!businessId && !!customerId
66
+ });
67
+ };
68
+ /**
69
+ * Hook to create a customer payment method
70
+ * @returns Mutation function and state for creating payment methods
71
+ */
72
+ const useCreateCustomerPaymentMethodMutation = () => {
73
+ const client = ApiContext.useApiClient();
74
+ const queryClient = reactQuery.useQueryClient();
75
+ const businessId = ApiContext.useBusinessId();
76
+ return reactQuery.useMutation({
77
+ mutationFn: async ({
78
+ customerId,
79
+ data,
80
+ options,
81
+ config
82
+ }) => {
83
+ if (!businessId) {
84
+ throw new Error("businessId is required for customer payment method operations");
85
+ }
86
+ return await client.businesses.customerPaymentMethods.createAsync(businessId, customerId, data, options, config);
87
+ },
88
+ onSuccess: (_, {
89
+ customerId
90
+ }) => {
91
+ if (businessId) {
92
+ queryClient.invalidateQueries({
93
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods]
94
+ });
95
+ }
96
+ }
97
+ });
98
+ };
99
+ /**
100
+ * Hook to update a customer payment method
101
+ * @returns Mutation function and state for updating payment methods
102
+ */
103
+ const useUpdateCustomerPaymentMethodMutation = () => {
104
+ const client = ApiContext.useApiClient();
105
+ const queryClient = reactQuery.useQueryClient();
106
+ const businessId = ApiContext.useBusinessId();
107
+ return reactQuery.useMutation({
108
+ mutationFn: async ({
109
+ customerId,
110
+ id,
111
+ data,
112
+ options,
113
+ config
114
+ }) => {
115
+ if (!businessId) {
116
+ throw new Error("businessId is required for customer payment method operations");
117
+ }
118
+ return await client.businesses.customerPaymentMethods.updateAsync(businessId, customerId, id, data, options, config);
119
+ },
120
+ onSuccess: (_, {
121
+ customerId,
122
+ id
123
+ }) => {
124
+ if (businessId) {
125
+ queryClient.invalidateQueries({
126
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods]
127
+ });
128
+ queryClient.invalidateQueries({
129
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods, id]
130
+ });
131
+ }
132
+ }
133
+ });
134
+ };
135
+ /**
136
+ * Hook to delete a customer payment method
137
+ * @returns Mutation function and state for deleting payment methods
138
+ */
139
+ const useDeleteCustomerPaymentMethodMutation = () => {
140
+ const client = ApiContext.useApiClient();
141
+ const queryClient = reactQuery.useQueryClient();
142
+ const businessId = ApiContext.useBusinessId();
143
+ return reactQuery.useMutation({
144
+ mutationFn: async ({
145
+ customerId,
146
+ id,
147
+ options,
148
+ config
149
+ }) => {
150
+ if (!businessId) {
151
+ throw new Error("businessId is required for customer payment method operations");
152
+ }
153
+ return await client.businesses.customerPaymentMethods.deleteAsync(businessId, customerId, id, options, config);
154
+ },
155
+ onSuccess: (_, {
156
+ customerId,
157
+ id
158
+ }) => {
159
+ if (businessId) {
160
+ queryClient.invalidateQueries({
161
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods]
162
+ });
163
+ queryClient.invalidateQueries({
164
+ queryKey: [SBApiKeys.SBApiKeys.Businesses, businessId, SBApiKeys.SBApiKeys.Customers, customerId, SBApiKeys.SBApiKeys.CustomerPaymentMethods, id]
165
+ });
166
+ }
167
+ }
168
+ });
169
+ };
170
+
171
+ exports.useCreateCustomerPaymentMethodMutation = useCreateCustomerPaymentMethodMutation;
172
+ exports.useDeleteCustomerPaymentMethodMutation = useDeleteCustomerPaymentMethodMutation;
173
+ exports.useGetCustomerPaymentMethodByIdQuery = useGetCustomerPaymentMethodByIdQuery;
174
+ exports.useListCustomerPaymentMethodsInfiniteQuery = useListCustomerPaymentMethodsInfiniteQuery;
175
+ exports.useUpdateCustomerPaymentMethodMutation = useUpdateCustomerPaymentMethodMutation;
176
+ //# sourceMappingURL=CustomerPaymentMethodsAPI.cjs.map