Refactor API response handling across multiple components to ensure consistency with the unified format. Update error handling and response validation in ValidationCard, usePersistentToggle, Status, Prompts, and api.ts to improve user feedback and maintain compatibility with the new API standards.
This commit is contained in:
@@ -63,10 +63,10 @@ export default function Status() {
|
||||
|
||||
const fetchStatus = async () => {
|
||||
try {
|
||||
// fetchAPI extracts data from unified format {success: true, data: {...}}
|
||||
// So response IS the data object
|
||||
const response = await fetchAPI('/v1/system/status/');
|
||||
// Handle unified API response format: {success: true, data: {...}}
|
||||
const statusData = response?.data || response;
|
||||
setStatus(statusData);
|
||||
setStatus(response);
|
||||
setError(null);
|
||||
} catch (err) {
|
||||
setError(err instanceof Error ? err.message : 'Unknown error');
|
||||
|
||||
@@ -75,11 +75,10 @@ export default function Prompts() {
|
||||
try {
|
||||
const promises = PROMPT_TYPES.map(async (type) => {
|
||||
try {
|
||||
// fetchAPI extracts data from unified format {success: true, data: {...}}
|
||||
// So response IS the data object
|
||||
const response = await fetchAPI(`/v1/system/prompts/by_type/${type.key}/`);
|
||||
// Extract data field from unified API response format
|
||||
// Response format: { success: true, data: {...}, request_id: "..." }
|
||||
const data = response?.data || response;
|
||||
return { key: type.key, data };
|
||||
return { key: type.key, data: response };
|
||||
} catch (error) {
|
||||
console.error(`Error loading prompt ${type.key}:`, error);
|
||||
return { key: type.key, data: null };
|
||||
@@ -119,7 +118,10 @@ export default function Prompts() {
|
||||
|
||||
setSaving({ ...saving, [promptType]: true });
|
||||
try {
|
||||
const response = await fetchAPI('/v1/system/prompts/save/', {
|
||||
// fetchAPI extracts data from unified format {success: true, data: {...}, message: "..."}
|
||||
// But save endpoint returns message in the response, so we need to check if it's still wrapped
|
||||
// For now, assume success if no error is thrown
|
||||
await fetchAPI('/v1/system/prompts/save/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
prompt_type: promptType,
|
||||
@@ -127,16 +129,8 @@ export default function Prompts() {
|
||||
}),
|
||||
});
|
||||
|
||||
// Extract data field from unified API response format
|
||||
// Response format: { success: true, data: {...}, message: "...", request_id: "..." }
|
||||
const data = response?.data || response;
|
||||
|
||||
if (response.success) {
|
||||
toast.success(response.message || 'Prompt saved successfully');
|
||||
await loadPrompts(); // Reload to get updated data
|
||||
} else {
|
||||
throw new Error(response.error || 'Failed to save prompt');
|
||||
}
|
||||
toast.success('Prompt saved successfully');
|
||||
await loadPrompts(); // Reload to get updated data
|
||||
} catch (error: any) {
|
||||
console.error('Error saving prompt:', error);
|
||||
toast.error(`Failed to save prompt: ${error.message}`);
|
||||
@@ -152,23 +146,18 @@ export default function Prompts() {
|
||||
|
||||
setSaving({ ...saving, [promptType]: true });
|
||||
try {
|
||||
const response = await fetchAPI('/v1/system/prompts/reset/', {
|
||||
// fetchAPI extracts data from unified format {success: true, data: {...}, message: "..."}
|
||||
// But reset endpoint returns message in the response, so we need to check if it's still wrapped
|
||||
// For now, assume success if no error is thrown
|
||||
await fetchAPI('/v1/system/prompts/reset/', {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
prompt_type: promptType,
|
||||
}),
|
||||
});
|
||||
|
||||
// Extract data field from unified API response format
|
||||
// Response format: { success: true, data: {...}, message: "...", request_id: "..." }
|
||||
const data = response?.data || response;
|
||||
|
||||
if (response.success) {
|
||||
toast.success(response.message || 'Prompt reset to default');
|
||||
await loadPrompts(); // Reload to get default value
|
||||
} else {
|
||||
throw new Error(response.error || 'Failed to reset prompt');
|
||||
}
|
||||
toast.success('Prompt reset to default');
|
||||
await loadPrompts(); // Reload to get default value
|
||||
} catch (error: any) {
|
||||
console.error('Error resetting prompt:', error);
|
||||
toast.error(`Failed to reset prompt: ${error.message}`);
|
||||
|
||||
Reference in New Issue
Block a user