@smartbills/react-hooks-sdk 0.0.2-alpha.44 → 0.0.2-alpha.46
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/@types/index.d.ts +1447 -0
- package/dist/@types/index.d.ts.map +1 -0
- package/dist/cjs/apis/SBApiKeys.cjs +56 -0
- package/dist/cjs/apis/SBApiKeys.cjs.map +1 -0
- package/dist/cjs/apis/api-logs/LogsAPI.cjs +42 -0
- package/dist/cjs/apis/api-logs/LogsAPI.cjs.map +1 -0
- package/dist/cjs/apis/attachments/AttachmentsAPI.cjs +147 -0
- package/dist/cjs/apis/attachments/AttachmentsAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs +88 -0
- package/dist/cjs/apis/banks/accounts/BankAccountAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs +58 -0
- package/dist/cjs/apis/banks/bank-institutions/BankInstitutionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs +57 -0
- package/dist/cjs/apis/banks/bank-transactions/BankTransactionAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/BusinessAPI.cjs +172 -0
- package/dist/cjs/apis/business/BusinessAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerAPI.cjs +161 -0
- package/dist/cjs/apis/business/customers/CustomerAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs +71 -0
- package/dist/cjs/apis/business/customers/CustomerBalanceTransactionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs +176 -0
- package/dist/cjs/apis/business/customers/CustomerPaymentMethodsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/departments/DepartmentApi.cjs +168 -0
- package/dist/cjs/apis/business/departments/DepartmentApi.cjs.map +1 -0
- package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs +137 -0
- package/dist/cjs/apis/business/departments/employees/DepartmentEmployeesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/fees/FeesAPI.cjs +167 -0
- package/dist/cjs/apis/business/fees/FeesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/locations/LocationsAPI.cjs +133 -0
- package/dist/cjs/apis/business/locations/LocationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/ProductsAPI.cjs +184 -0
- package/dist/cjs/apis/business/products/ProductsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs +195 -0
- package/dist/cjs/apis/business/products/images/ProductImagesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs +169 -0
- package/dist/cjs/apis/business/products/modifiers/ModifiersAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs +183 -0
- package/dist/cjs/apis/business/products/options/ProductOptionsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs +185 -0
- package/dist/cjs/apis/business/products/variants/ProductVariantsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs +139 -0
- package/dist/cjs/apis/business/promo-codes/PromoCodesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs +143 -0
- package/dist/cjs/apis/business/reviews/ReviewsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/tables/TablesAPI.cjs +75 -0
- package/dist/cjs/apis/business/tables/TablesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/taxes/TaxesAPI.cjs +140 -0
- package/dist/cjs/apis/business/taxes/TaxesAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs +161 -0
- package/dist/cjs/apis/business/team/TeamMemberInvitationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/team/TeamMembersAPI.cjs +93 -0
- package/dist/cjs/apis/business/team/TeamMembersAPI.cjs.map +1 -0
- package/dist/cjs/apis/business/vendors/VendorsAPI.cjs +237 -0
- package/dist/cjs/apis/business/vendors/VendorsAPI.cjs.map +1 -0
- package/dist/cjs/apis/documents/DocumentsAPI.cjs +87 -0
- package/dist/cjs/apis/documents/DocumentsAPI.cjs.map +1 -0
- package/dist/cjs/apis/expenses/ExpensesAPI.cjs +62 -0
- package/dist/cjs/apis/expenses/ExpensesAPI.cjs.map +1 -0
- package/dist/cjs/apis/friends/FriendsAPI.cjs +150 -0
- package/dist/cjs/apis/friends/FriendsAPI.cjs.map +1 -0
- package/dist/cjs/apis/integrations/IntegrationsAPI.cjs +55 -0
- package/dist/cjs/apis/integrations/IntegrationsAPI.cjs.map +1 -0
- package/dist/cjs/apis/invoices/InvoicesAPI.cjs +168 -0
- package/dist/cjs/apis/invoices/InvoicesAPI.cjs.map +1 -0
- package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs +484 -0
- package/dist/cjs/apis/loyalty/LoyaltyProgramAPI.cjs.map +1 -0
- package/dist/cjs/apis/notifications/NotificationAPI.cjs +103 -0
- package/dist/cjs/apis/notifications/NotificationAPI.cjs.map +1 -0
- package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs +125 -0
- package/dist/cjs/apis/payment-methods/PaymentMethodsAPI.cjs.map +1 -0
- package/dist/cjs/apis/receipts/ReceiptAPI.cjs +135 -0
- package/dist/cjs/apis/receipts/ReceiptAPI.cjs.map +1 -0
- package/dist/cjs/apis/user/UserAPI.cjs +130 -0
- package/dist/cjs/apis/user/UserAPI.cjs.map +1 -0
- package/dist/cjs/apis/vendors/VendorsAPI.cjs +215 -0
- package/dist/cjs/apis/vendors/VendorsAPI.cjs.map +1 -0
- package/dist/cjs/context/ApiContext.cjs +94 -0
- package/dist/cjs/context/ApiContext.cjs.map +1 -0
- package/dist/cjs/index.cjs +224 -0
- package/dist/cjs/index.cjs.map +1 -0
- package/dist/esm/apis/SBApiKeys.mjs +56 -0
- package/dist/esm/apis/SBApiKeys.mjs.map +1 -0
- package/dist/esm/apis/api-logs/LogsAPI.mjs +39 -0
- package/dist/esm/apis/api-logs/LogsAPI.mjs.map +1 -0
- package/dist/esm/apis/attachments/AttachmentsAPI.mjs +142 -0
- package/dist/esm/apis/attachments/AttachmentsAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs +84 -0
- package/dist/esm/apis/banks/accounts/BankAccountAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs +55 -0
- package/dist/esm/apis/banks/bank-institutions/BankInstitutionsAPI.mjs.map +1 -0
- package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs +54 -0
- package/dist/esm/apis/banks/bank-transactions/BankTransactionAPI.mjs.map +1 -0
- package/dist/esm/apis/business/BusinessAPI.mjs +165 -0
- package/dist/esm/apis/business/BusinessAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerAPI.mjs +155 -0
- package/dist/esm/apis/business/customers/CustomerAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs +68 -0
- package/dist/esm/apis/business/customers/CustomerBalanceTransactionsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs +170 -0
- package/dist/esm/apis/business/customers/CustomerPaymentMethodsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/departments/DepartmentApi.mjs +161 -0
- package/dist/esm/apis/business/departments/DepartmentApi.mjs.map +1 -0
- package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs +132 -0
- package/dist/esm/apis/business/departments/employees/DepartmentEmployeesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/fees/FeesAPI.mjs +161 -0
- package/dist/esm/apis/business/fees/FeesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/locations/LocationsAPI.mjs +127 -0
- package/dist/esm/apis/business/locations/LocationsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/ProductsAPI.mjs +177 -0
- package/dist/esm/apis/business/products/ProductsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs +188 -0
- package/dist/esm/apis/business/products/images/ProductImagesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs +163 -0
- package/dist/esm/apis/business/products/modifiers/ModifiersAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs +177 -0
- package/dist/esm/apis/business/products/options/ProductOptionsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs +179 -0
- package/dist/esm/apis/business/products/variants/ProductVariantsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs +133 -0
- package/dist/esm/apis/business/promo-codes/PromoCodesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/reviews/ReviewsAPI.mjs +137 -0
- package/dist/esm/apis/business/reviews/ReviewsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/tables/TablesAPI.mjs +70 -0
- package/dist/esm/apis/business/tables/TablesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/taxes/TaxesAPI.mjs +134 -0
- package/dist/esm/apis/business/taxes/TaxesAPI.mjs.map +1 -0
- package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs +153 -0
- package/dist/esm/apis/business/team/TeamMemberInvitationsAPI.mjs.map +1 -0
- package/dist/esm/apis/business/team/TeamMembersAPI.mjs +88 -0
- package/dist/esm/apis/business/team/TeamMembersAPI.mjs.map +1 -0
- package/dist/esm/apis/business/vendors/VendorsAPI.mjs +228 -0
- package/dist/esm/apis/business/vendors/VendorsAPI.mjs.map +1 -0
- package/dist/esm/apis/documents/DocumentsAPI.mjs +82 -0
- package/dist/esm/apis/documents/DocumentsAPI.mjs.map +1 -0
- package/dist/esm/apis/expenses/ExpensesAPI.mjs +58 -0
- package/dist/esm/apis/expenses/ExpensesAPI.mjs.map +1 -0
- package/dist/esm/apis/friends/FriendsAPI.mjs +144 -0
- package/dist/esm/apis/friends/FriendsAPI.mjs.map +1 -0
- package/dist/esm/apis/integrations/IntegrationsAPI.mjs +52 -0
- package/dist/esm/apis/integrations/IntegrationsAPI.mjs.map +1 -0
- package/dist/esm/apis/invoices/InvoicesAPI.mjs +161 -0
- package/dist/esm/apis/invoices/InvoicesAPI.mjs.map +1 -0
- package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs +482 -0
- package/dist/esm/apis/loyalty/LoyaltyProgramAPI.mjs.map +1 -0
- package/dist/esm/apis/notifications/NotificationAPI.mjs +98 -0
- package/dist/esm/apis/notifications/NotificationAPI.mjs.map +1 -0
- package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs +117 -0
- package/dist/esm/apis/payment-methods/PaymentMethodsAPI.mjs.map +1 -0
- package/dist/esm/apis/receipts/ReceiptAPI.mjs +129 -0
- package/dist/esm/apis/receipts/ReceiptAPI.mjs.map +1 -0
- package/dist/esm/apis/user/UserAPI.mjs +123 -0
- package/dist/esm/apis/user/UserAPI.mjs.map +1 -0
- package/dist/esm/apis/vendors/VendorsAPI.mjs +204 -0
- package/dist/esm/apis/vendors/VendorsAPI.mjs.map +1 -0
- package/dist/esm/context/ApiContext.mjs +86 -0
- package/dist/esm/context/ApiContext.mjs.map +1 -0
- package/dist/esm/index.mjs +39 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/umd/index.js +5099 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,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
|