@rovela-ai/sdk 0.3.6 → 0.3.8
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/admin/components/CategoryForm.d.ts.map +1 -1
- package/dist/admin/components/CategoryForm.js +54 -65
- package/dist/admin/components/CategoryForm.js.map +1 -1
- package/dist/admin/components/CategorySelect.d.ts.map +1 -1
- package/dist/admin/components/CategorySelect.js +9 -14
- package/dist/admin/components/CategorySelect.js.map +1 -1
- package/dist/admin/components/CustomerDetails.js +3 -3
- package/dist/admin/components/CustomerDetails.js.map +1 -1
- package/dist/admin/components/CustomerTable.js +3 -3
- package/dist/admin/components/CustomerTable.js.map +1 -1
- package/dist/admin/components/LogoUpload.d.ts.map +1 -1
- package/dist/admin/components/LogoUpload.js +49 -67
- package/dist/admin/components/LogoUpload.js.map +1 -1
- package/dist/admin/components/OrderDetails.d.ts.map +1 -1
- package/dist/admin/components/OrderDetails.js +34 -65
- package/dist/admin/components/OrderDetails.js.map +1 -1
- package/dist/admin/components/OrderTable.js +2 -2
- package/dist/admin/components/OrderTable.js.map +1 -1
- package/dist/admin/components/PaymentSettings.d.ts.map +1 -1
- package/dist/admin/components/PaymentSettings.js +28 -51
- package/dist/admin/components/PaymentSettings.js.map +1 -1
- package/dist/admin/components/ProductTable.js +3 -3
- package/dist/admin/components/ProductTable.js.map +1 -1
- package/dist/admin/components/ShippingSettings.d.ts.map +1 -1
- package/dist/admin/components/ShippingSettings.js +177 -244
- package/dist/admin/components/ShippingSettings.js.map +1 -1
- package/dist/admin/components/StoreSettings.d.ts.map +1 -1
- package/dist/admin/components/StoreSettings.js +28 -42
- package/dist/admin/components/StoreSettings.js.map +1 -1
- package/dist/admin/components/TaxSettings.d.ts.map +1 -1
- package/dist/admin/components/TaxSettings.js +49 -81
- package/dist/admin/components/TaxSettings.js.map +1 -1
- package/dist/admin/hooks/fetchAdminApi.d.ts +65 -0
- package/dist/admin/hooks/fetchAdminApi.d.ts.map +1 -0
- package/dist/admin/hooks/fetchAdminApi.js +96 -0
- package/dist/admin/hooks/fetchAdminApi.js.map +1 -0
- package/dist/admin/hooks/useAdminCategories.d.ts +0 -27
- package/dist/admin/hooks/useAdminCategories.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminCategories.js +39 -147
- package/dist/admin/hooks/useAdminCategories.js.map +1 -1
- package/dist/admin/hooks/useAdminCustomers.d.ts +0 -38
- package/dist/admin/hooks/useAdminCustomers.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminCustomers.js +66 -172
- package/dist/admin/hooks/useAdminCustomers.js.map +1 -1
- package/dist/admin/hooks/useAdminMe.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminMe.js +31 -59
- package/dist/admin/hooks/useAdminMe.js.map +1 -1
- package/dist/admin/hooks/useAdminOrders.d.ts +0 -38
- package/dist/admin/hooks/useAdminOrders.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminOrders.js +66 -208
- package/dist/admin/hooks/useAdminOrders.js.map +1 -1
- package/dist/admin/hooks/useAdminProducts.d.ts +0 -36
- package/dist/admin/hooks/useAdminProducts.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminProducts.js +61 -180
- package/dist/admin/hooks/useAdminProducts.js.map +1 -1
- package/dist/admin/hooks/useAdminStats.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminStats.js +26 -38
- package/dist/admin/hooks/useAdminStats.js.map +1 -1
- package/dist/admin/hooks/useAdminUsers.d.ts.map +1 -1
- package/dist/admin/hooks/useAdminUsers.js +82 -145
- package/dist/admin/hooks/useAdminUsers.js.map +1 -1
- package/dist/admin/index.d.ts +1 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +3 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/server/index.d.ts +2 -0
- package/dist/admin/server/index.d.ts.map +1 -1
- package/dist/admin/server/index.js +4 -0
- package/dist/admin/server/index.js.map +1 -1
- package/dist/admin/types.d.ts +4 -4
- package/dist/admin/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -2,246 +2,104 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* @rovela/sdk/admin/hooks/useAdminOrders
|
|
4
4
|
*
|
|
5
|
-
* Order management hook for admin panel.
|
|
5
|
+
* Order management hook for admin panel. All HTTP calls go through
|
|
6
|
+
* `fetchAdminApi` — see its file-level comment for the rationale.
|
|
6
7
|
*/
|
|
7
8
|
import { useState, useCallback } from 'react';
|
|
9
|
+
import { fetchAdminApi } from './fetchAdminApi';
|
|
8
10
|
// =============================================================================
|
|
9
11
|
// Hook Implementation
|
|
10
12
|
// =============================================================================
|
|
11
|
-
/**
|
|
12
|
-
* Order management hook for admin panel.
|
|
13
|
-
*
|
|
14
|
-
* @returns Orders data and management methods
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* function OrdersPage() {
|
|
19
|
-
* const {
|
|
20
|
-
* orders,
|
|
21
|
-
* total,
|
|
22
|
-
* page,
|
|
23
|
-
* isLoading,
|
|
24
|
-
* error,
|
|
25
|
-
* fetchOrders,
|
|
26
|
-
* updateStatus,
|
|
27
|
-
* processRefund,
|
|
28
|
-
* } = useAdminOrders()
|
|
29
|
-
*
|
|
30
|
-
* useEffect(() => {
|
|
31
|
-
* fetchOrders({ status: 'pending' })
|
|
32
|
-
* }, [fetchOrders])
|
|
33
|
-
*
|
|
34
|
-
* const handleShip = async (orderId: string) => {
|
|
35
|
-
* const success = await updateStatus(orderId, 'shipped', true)
|
|
36
|
-
* if (success) fetchOrders()
|
|
37
|
-
* }
|
|
38
|
-
*
|
|
39
|
-
* return (
|
|
40
|
-
* <OrderTable
|
|
41
|
-
* orders={orders}
|
|
42
|
-
* onShip={handleShip}
|
|
43
|
-
* onRefund={(id, amount) => processRefund(id, amount)}
|
|
44
|
-
* />
|
|
45
|
-
* )
|
|
46
|
-
* }
|
|
47
|
-
* ```
|
|
48
|
-
*/
|
|
49
13
|
export function useAdminOrders() {
|
|
50
14
|
const [orders, setOrders] = useState([]);
|
|
51
15
|
const [total, setTotal] = useState(0);
|
|
52
16
|
const [page, setPage] = useState(1);
|
|
53
17
|
const [isLoading, setIsLoading] = useState(false);
|
|
54
18
|
const [error, setError] = useState(null);
|
|
55
|
-
/**
|
|
56
|
-
* Fetch orders with optional filters.
|
|
57
|
-
*/
|
|
58
19
|
const fetchOrders = useCallback(async (options = {}) => {
|
|
59
20
|
const { status, page: pageNum = 1, limit = 20 } = options;
|
|
60
21
|
setIsLoading(true);
|
|
61
22
|
setError(null);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
const data = await response.json();
|
|
74
|
-
setOrders(data.data || []);
|
|
75
|
-
setTotal(data.total || 0);
|
|
76
|
-
setPage(data.page || 1);
|
|
77
|
-
}
|
|
78
|
-
catch (err) {
|
|
79
|
-
console.error('[useAdminOrders] Fetch error:', err);
|
|
80
|
-
setError(err instanceof Error ? err.message : 'Failed to fetch orders');
|
|
81
|
-
}
|
|
82
|
-
finally {
|
|
83
|
-
setIsLoading(false);
|
|
23
|
+
const params = new URLSearchParams();
|
|
24
|
+
if (status)
|
|
25
|
+
params.set('status', status);
|
|
26
|
+
params.set('page', pageNum.toString());
|
|
27
|
+
params.set('limit', limit.toString());
|
|
28
|
+
const res = await fetchAdminApi(`/api/admin/orders?${params.toString()}`);
|
|
29
|
+
setIsLoading(false);
|
|
30
|
+
if (!res.ok) {
|
|
31
|
+
setError(res.error);
|
|
32
|
+
return;
|
|
84
33
|
}
|
|
34
|
+
setOrders(res.data.data || []);
|
|
35
|
+
setTotal(res.data.total || 0);
|
|
36
|
+
setPage(res.data.page || 1);
|
|
85
37
|
}, []);
|
|
86
|
-
/**
|
|
87
|
-
* Update order status.
|
|
88
|
-
*
|
|
89
|
-
* @param orderId - Order ID
|
|
90
|
-
* @param status - New status
|
|
91
|
-
* @param notifyCustomer - Send email notification (default true)
|
|
92
|
-
* @param trackingInfo - Optional tracking info for shipped status
|
|
93
|
-
* @returns Success boolean
|
|
94
|
-
*/
|
|
95
38
|
const updateStatus = useCallback(async (orderId, status, notifyCustomer = true, trackingInfo) => {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
throw new Error(data.error || 'Failed to update order status');
|
|
109
|
-
}
|
|
110
|
-
return true;
|
|
111
|
-
}
|
|
112
|
-
catch (err) {
|
|
113
|
-
console.error('[useAdminOrders] Update status error:', err);
|
|
114
|
-
setError(err instanceof Error ? err.message : 'Failed to update order status');
|
|
115
|
-
return false;
|
|
39
|
+
const res = await fetchAdminApi(`/api/admin/orders/${orderId}`, {
|
|
40
|
+
method: 'PUT',
|
|
41
|
+
headers: { 'Content-Type': 'application/json' },
|
|
42
|
+
body: JSON.stringify({
|
|
43
|
+
status,
|
|
44
|
+
notifyCustomer,
|
|
45
|
+
...trackingInfo,
|
|
46
|
+
}),
|
|
47
|
+
});
|
|
48
|
+
if (!res.ok) {
|
|
49
|
+
setError(res.error);
|
|
50
|
+
return { success: false, error: res.error };
|
|
116
51
|
}
|
|
52
|
+
setError(null);
|
|
53
|
+
return { success: true };
|
|
117
54
|
}, []);
|
|
118
|
-
/**
|
|
119
|
-
* Process refund for an order.
|
|
120
|
-
*
|
|
121
|
-
* @param orderId - Order ID
|
|
122
|
-
* @param amount - Refund amount in cents
|
|
123
|
-
* @param reason - Optional refund reason
|
|
124
|
-
* @returns Refund result
|
|
125
|
-
*/
|
|
126
55
|
const processRefund = useCallback(async (orderId, amount, reason) => {
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (!response.ok) {
|
|
139
|
-
return {
|
|
140
|
-
success: false,
|
|
141
|
-
error: data.error || 'Failed to process refund',
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
return {
|
|
145
|
-
success: true,
|
|
146
|
-
refundId: data.refundId,
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
catch (err) {
|
|
150
|
-
console.error('[useAdminOrders] Refund error:', err);
|
|
151
|
-
return {
|
|
152
|
-
success: false,
|
|
153
|
-
error: err instanceof Error ? err.message : 'Failed to process refund',
|
|
154
|
-
};
|
|
56
|
+
const res = await fetchAdminApi(`/api/admin/orders/${orderId}/refund`, {
|
|
57
|
+
method: 'POST',
|
|
58
|
+
headers: { 'Content-Type': 'application/json' },
|
|
59
|
+
body: JSON.stringify({
|
|
60
|
+
amount,
|
|
61
|
+
reason,
|
|
62
|
+
notifyCustomer: true,
|
|
63
|
+
}),
|
|
64
|
+
});
|
|
65
|
+
if (!res.ok) {
|
|
66
|
+
return { success: false, error: res.error };
|
|
155
67
|
}
|
|
68
|
+
return { success: true, refundId: res.data.refundId };
|
|
156
69
|
}, []);
|
|
157
|
-
/**
|
|
158
|
-
* Get a single order by ID.
|
|
159
|
-
*/
|
|
160
70
|
const getOrder = useCallback(async (orderId) => {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
const data = await response.json();
|
|
165
|
-
throw new Error(data.error || 'Failed to fetch order');
|
|
166
|
-
}
|
|
167
|
-
const data = await response.json();
|
|
168
|
-
return data.data;
|
|
169
|
-
}
|
|
170
|
-
catch (err) {
|
|
171
|
-
console.error('[useAdminOrders] Get order error:', err);
|
|
172
|
-
setError(err instanceof Error ? err.message : 'Failed to fetch order');
|
|
71
|
+
const res = await fetchAdminApi(`/api/admin/orders/${orderId}`);
|
|
72
|
+
if (!res.ok) {
|
|
73
|
+
setError(res.error);
|
|
173
74
|
return null;
|
|
174
75
|
}
|
|
76
|
+
return res.data.data;
|
|
175
77
|
}, []);
|
|
176
|
-
/**
|
|
177
|
-
* Approve a return request and process Stripe refund.
|
|
178
|
-
*
|
|
179
|
-
* @param orderId - Order ID
|
|
180
|
-
* @param notifyCustomer - Send email notification (default true)
|
|
181
|
-
* @returns Return result with refund ID on success
|
|
182
|
-
*/
|
|
183
78
|
const approveReturn = useCallback(async (orderId, notifyCustomer = true) => {
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
if (!response.ok) {
|
|
192
|
-
return {
|
|
193
|
-
success: false,
|
|
194
|
-
error: data.error || 'Failed to approve return',
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
return {
|
|
198
|
-
success: true,
|
|
199
|
-
refundId: data.refundId,
|
|
200
|
-
message: data.message,
|
|
201
|
-
};
|
|
202
|
-
}
|
|
203
|
-
catch (err) {
|
|
204
|
-
console.error('[useAdminOrders] Approve return error:', err);
|
|
205
|
-
return {
|
|
206
|
-
success: false,
|
|
207
|
-
error: err instanceof Error ? err.message : 'Failed to approve return',
|
|
208
|
-
};
|
|
79
|
+
const res = await fetchAdminApi(`/api/admin/orders/${orderId}/return/approve`, {
|
|
80
|
+
method: 'POST',
|
|
81
|
+
headers: { 'Content-Type': 'application/json' },
|
|
82
|
+
body: JSON.stringify({ notifyCustomer }),
|
|
83
|
+
});
|
|
84
|
+
if (!res.ok) {
|
|
85
|
+
return { success: false, error: res.error };
|
|
209
86
|
}
|
|
87
|
+
return {
|
|
88
|
+
success: true,
|
|
89
|
+
refundId: res.data.refundId,
|
|
90
|
+
message: res.data.message,
|
|
91
|
+
};
|
|
210
92
|
}, []);
|
|
211
|
-
/**
|
|
212
|
-
* Reject a return request (order returns to 'delivered' status).
|
|
213
|
-
*
|
|
214
|
-
* @param orderId - Order ID
|
|
215
|
-
* @param reason - Optional rejection reason (for internal logging)
|
|
216
|
-
* @param notifyCustomer - Send email notification (default true)
|
|
217
|
-
* @returns Return result
|
|
218
|
-
*/
|
|
219
93
|
const rejectReturn = useCallback(async (orderId, reason, notifyCustomer = true) => {
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
if (!response.ok) {
|
|
228
|
-
return {
|
|
229
|
-
success: false,
|
|
230
|
-
error: data.error || 'Failed to reject return',
|
|
231
|
-
};
|
|
232
|
-
}
|
|
233
|
-
return {
|
|
234
|
-
success: true,
|
|
235
|
-
message: data.message,
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
catch (err) {
|
|
239
|
-
console.error('[useAdminOrders] Reject return error:', err);
|
|
240
|
-
return {
|
|
241
|
-
success: false,
|
|
242
|
-
error: err instanceof Error ? err.message : 'Failed to reject return',
|
|
243
|
-
};
|
|
94
|
+
const res = await fetchAdminApi(`/api/admin/orders/${orderId}/return/reject`, {
|
|
95
|
+
method: 'POST',
|
|
96
|
+
headers: { 'Content-Type': 'application/json' },
|
|
97
|
+
body: JSON.stringify({ reason, notifyCustomer }),
|
|
98
|
+
});
|
|
99
|
+
if (!res.ok) {
|
|
100
|
+
return { success: false, error: res.error };
|
|
244
101
|
}
|
|
102
|
+
return { success: true, message: res.data.message };
|
|
245
103
|
}, []);
|
|
246
104
|
return {
|
|
247
105
|
orders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdminOrders.js","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminOrders.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ
|
|
1
|
+
{"version":3,"file":"useAdminOrders.js","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminOrders.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,39 +1,3 @@
|
|
|
1
1
|
import type { UseAdminProductsReturn } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* Product management hook for admin panel.
|
|
4
|
-
*
|
|
5
|
-
* @returns Products data and CRUD methods
|
|
6
|
-
*
|
|
7
|
-
* @example
|
|
8
|
-
* ```typescript
|
|
9
|
-
* function ProductsPage() {
|
|
10
|
-
* const {
|
|
11
|
-
* products,
|
|
12
|
-
* total,
|
|
13
|
-
* page,
|
|
14
|
-
* isLoading,
|
|
15
|
-
* error,
|
|
16
|
-
* fetchProducts,
|
|
17
|
-
* createProduct,
|
|
18
|
-
* updateProduct,
|
|
19
|
-
* deleteProduct,
|
|
20
|
-
* updateVariant,
|
|
21
|
-
* } = useAdminProducts()
|
|
22
|
-
*
|
|
23
|
-
* useEffect(() => {
|
|
24
|
-
* fetchProducts({ status: 'active', sort: 'newest' })
|
|
25
|
-
* }, [fetchProducts])
|
|
26
|
-
*
|
|
27
|
-
* const handleCreate = async (data: ProductFormData) => {
|
|
28
|
-
* const result = await createProduct(data)
|
|
29
|
-
* if (result.success) {
|
|
30
|
-
* fetchProducts() // Refresh list
|
|
31
|
-
* }
|
|
32
|
-
* }
|
|
33
|
-
*
|
|
34
|
-
* return <ProductTable products={products} onCreate={handleCreate} />
|
|
35
|
-
* }
|
|
36
|
-
* ```
|
|
37
|
-
*/
|
|
38
2
|
export declare function useAdminProducts(): UseAdminProductsReturn;
|
|
39
3
|
//# sourceMappingURL=useAdminProducts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAdminProducts.d.ts","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminProducts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAdminProducts.d.ts","sourceRoot":"","sources":["../../../src/admin/hooks/useAdminProducts.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAIV,sBAAsB,EAIvB,MAAM,UAAU,CAAA;AAMjB,wBAAgB,gBAAgB,IAAI,sBAAsB,CA0JzD"}
|