Add pagination to admin user, vendor, and ban lists

Introduces pagination controls and server-side paginated fetching for blocked users, users, and vendors in the admin dashboard. Improves error handling in server API responses and validates order ID in OrderDetailsModal. Updates git-info.json with latest commit metadata.
This commit is contained in:
g
2025-12-31 05:46:24 +00:00
parent 0062aa2dfe
commit 5f1e294091
6 changed files with 194 additions and 20 deletions

View File

@@ -86,8 +86,26 @@ export async function fetchServer<T = unknown>(
// Handle other errors
if (!res.ok) {
const errorData = await res.json().catch(() => ({}));
const errorMessage = errorData.message || errorData.error || `Request failed: ${res.status} ${res.statusText}`;
let errorData;
try {
errorData = await res.json();
} catch {
errorData = {};
}
// Handle new error format: { success: false, error: { message: "...", code: "..." } }
// or old format: { error: "...", message: "..." }
let errorMessage: string;
if (errorData.error?.message) {
errorMessage = errorData.error.message;
} else if (typeof errorData.error === 'string') {
errorMessage = errorData.error;
} else if (errorData.message) {
errorMessage = errorData.message;
} else {
errorMessage = `Request failed: ${res.status} ${res.statusText}`;
}
throw new Error(errorMessage);
}
@@ -96,10 +114,24 @@ export async function fetchServer<T = unknown>(
return {} as T;
}
return await res.json();
try {
const data = await res.json();
return data;
} catch (parseError) {
// If JSON parsing fails, throw a proper error
throw new Error(`Failed to parse response from ${endpoint}: ${parseError instanceof Error ? parseError.message : String(parseError)}`);
}
} catch (error) {
console.error(`Server request to ${endpoint} failed:`, error);
throw error;
// Ensure we always throw an Error instance, not an object
if (error instanceof Error) {
throw error;
} else if (typeof error === 'string') {
throw new Error(error);
} else {
const errorStr = error && typeof error === 'object' ? JSON.stringify(error) : String(error);
throw new Error(`Request failed: ${errorStr}`);
}
}
}