feat: handle direct array response in group sync API

main
borja (aider) 3 months ago
parent 244a6e9483
commit 50133ecb9a

@ -105,18 +105,41 @@ export class GroupSyncService {
throw new Error(`API request failed: ${response.status} ${response.statusText}`); throw new Error(`API request failed: ${response.status} ${response.statusText}`);
} }
const data = await response.json(); const rawResponse = await response.text();
console.log(data); console.log(' Raw API response length:', rawResponse.length);
console.log(' API response:', {
status: data.status, // Parse response which could be either:
message: data.message, // 1. Direct array of groups: [{group1}, {group2}]
responseLength: data.response?.length || 0 // 2. Or wrapped response: {status, message, response}
}); let groups;
try {
const parsed = JSON.parse(rawResponse);
if (Array.isArray(parsed)) {
// Case 1: Direct array response
groups = parsed;
console.log(' Received direct array of', groups.length, 'groups');
} else if (parsed.response && Array.isArray(parsed.response)) {
// Case 2: Wrapped response
if (parsed.status !== 'success') {
throw new Error(`API error: ${parsed.message || 'Unknown error'}`);
}
groups = parsed.response;
console.log(' Received wrapped response with', groups.length, 'groups');
} else {
throw new Error('Invalid API response format - expected array or wrapped response');
}
} catch (e) {
console.error('❌ Failed to parse API response:', {
error: e instanceof Error ? e.message : String(e),
responseSample: rawResponse.substring(0, 100) + '...'
});
throw e;
}
if (data.status !== 'success') { if (!groups.length) {
throw new Error(`API error: ${data.message || 'Unknown error'}`); console.warn('⚠️ API returned empty group list');
} }
return data.response; return groups;
} catch (error) { } catch (error) {
console.error('❌ Failed to fetch groups:', { console.error('❌ Failed to fetch groups:', {
error: error instanceof Error ? error.message : String(error), error: error instanceof Error ? error.message : String(error),

Loading…
Cancel
Save