@@ -168,168 +83,67 @@ function AdminContent() {
);
}
- const handleRetry = async (orderId: string) => {
- if (!confirm(text.retryConfirm)) return;
- try {
- const res = await fetch(`/api/admin/orders/${orderId}/retry?token=${token}`, {
- method: 'POST',
- });
- if (res.ok) {
- fetchOrders();
- } else {
- const data = await res.json();
- setError(data.error || text.retryFailed);
- }
- } catch {
- setError(text.retryRequestFailed);
- }
- };
-
- const handleCancel = async (orderId: string) => {
- if (!confirm(text.cancelConfirm)) return;
- try {
- const res = await fetch(`/api/admin/orders/${orderId}/cancel?token=${token}`, {
- method: 'POST',
- });
- if (res.ok) {
- fetchOrders();
- } else {
- const data = await res.json();
- setError(data.error || text.cancelFailed);
- }
- } catch {
- setError(text.cancelRequestFailed);
- }
- };
-
- const handleViewDetail = async (orderId: string) => {
- try {
- const res = await fetch(`/api/admin/orders/${orderId}?token=${token}`);
- if (res.ok) {
- const data = await res.json();
- setDetailOrder(data);
- }
- } catch {
- setError(text.loadDetailFailed);
- }
- };
-
- const statuses = ['', 'PENDING', 'PAID', 'RECHARGING', 'COMPLETED', 'EXPIRED', 'CANCELLED', 'FAILED', 'REFUNDED'];
- const statusLabels: Record
= text.statuses;
-
const navParams = new URLSearchParams();
if (token) navParams.set('token', token);
if (locale === 'en') navParams.set('lang', 'en');
if (isDark) navParams.set('theme', 'dark');
if (isEmbedded) navParams.set('ui_mode', 'embedded');
- const btnBase = [
- 'inline-flex items-center rounded-lg border px-3 py-1.5 text-xs font-medium transition-colors',
- isDark
- ? 'border-slate-600 text-slate-200 hover:bg-slate-800'
- : 'border-slate-300 text-slate-700 hover:bg-slate-100',
- ].join(' ');
-
return (
-
-
- {text.dashboard}
-
-
- >
- }
- >
- {error && (
-
- {error}
-
-
- )}
-
- {/* Filters */}
-
- {statuses.map((s) => (
-