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:
@@ -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}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user