fix: prevent asset conflicts between React and Grid.js versions

Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
dwindown
2026-04-18 17:02:14 +07:00
parent bd9cdac02e
commit e8fbfb14c1
74973 changed files with 6658406 additions and 71 deletions

View File

@@ -24,6 +24,8 @@ export async function ajaxRequest(action, data = {}) {
}
});
console.log(`[AJAX] Sending request: ${action}`, { nonce: NONCE, data });
try {
const response = await fetch(API_BASE, {
method: 'POST',
@@ -31,10 +33,14 @@ export async function ajaxRequest(action, data = {}) {
body: formData,
});
console.log(`[AJAX] Response status: ${action}`, response.status);
const result = await response.json();
console.log(`[AJAX] Response data: ${action}`, result);
if (!response.ok || result.success === false) {
throw new Error(result.message || 'Request failed');
const errorMsg = result.data?.message || result.message || 'Request failed';
throw new Error(errorMsg);
}
return result;
@@ -76,21 +82,21 @@ export async function apiRequest(endpoint, options = {}) {
* Orders API
*/
export const ordersApi = {
list: (params = {}) => ajaxRequest('formipay_tabledata_orders', params),
get: (orderId) => ajaxRequest('formipay_get_order', { order_id: orderId }),
updateStatus: (orderId, status) => ajaxRequest('formipay_update_order_status', {
list: (params = {}) => ajaxRequest('formipay-tabledata-orders', params),
get: (orderId) => ajaxRequest('formipay-get-order', { order_id: orderId }),
updateStatus: (orderId, status) => ajaxRequest('formipay-update-order-status', {
order_id: orderId,
status,
}),
delete: (orderIds) => ajaxRequest('formipay_bulk_delete_order', { ids: orderIds }),
delete: (orderIds) => ajaxRequest('formipay-bulk-delete-order', { ids: orderIds }),
};
/**
* Customers API
*/
export const customersApi = {
list: (params = {}) => ajaxRequest('formipay_tabledata_customers', params),
get: (customerId) => ajaxRequest('formipay_get_customer', { customer_id: customerId }),
list: (params = {}) => ajaxRequest('formipay-tabledata-customers', params),
get: (customerId) => ajaxRequest('formipay-get-customer', { customer_id: customerId }),
};
/**
@@ -106,16 +112,28 @@ export const productsApi = {
* Forms API
*/
export const formsApi = {
list: (params = {}) => ajaxRequest('formipay_tabledata_forms', params),
get: (formId) => ajaxRequest('formipay_get_form', { post_id: formId }),
list: (params = {}) => ajaxRequest('formipay-tabledata-forms', params),
get: (formId) => ajaxRequest('formipay-get-form', { post_id: formId }),
};
/**
* Coupons API
*/
export const couponsApi = {
list: (params = {}) => ajaxRequest('formipay_tabledata_coupons', params),
check: (code, formId) => ajaxRequest('formipay_check_coupon', { code, form_id: formId }),
list: (params = {}) => ajaxRequest('formipay-tabledata-coupons', params),
check: (code, formId) => ajaxRequest('formipay-check-coupon', { code, form_id: formId }),
create: (data) => ajaxRequest('formipay-create-coupon-post', data),
delete: (ids) => ajaxRequest('formipay-bulk-delete-coupon', { ids }),
};
/**
* Access Items API
*/
export const accessApi = {
list: (params = {}) => ajaxRequest('formipay-tabledata-access-items', params),
getProducts: () => ajaxRequest('formipay_access_items_get_products', {}),
create: (data) => ajaxRequest('formipay-create-access-item-post', data),
delete: (ids) => ajaxRequest('formipay-bulk-delete-access-item', { ids }),
};
/**