diff --git a/src/services/group-sync.ts b/src/services/group-sync.ts index 4e9492a..067b58d 100644 --- a/src/services/group-sync.ts +++ b/src/services/group-sync.ts @@ -105,18 +105,41 @@ export class GroupSyncService { throw new Error(`API request failed: ${response.status} ${response.statusText}`); } - const data = await response.json(); - console.log(data); - console.log('ℹ️ API response:', { - status: data.status, - message: data.message, - responseLength: data.response?.length || 0 - }); + const rawResponse = await response.text(); + console.log('ℹ️ Raw API response length:', rawResponse.length); + + // Parse response which could be either: + // 1. Direct array of groups: [{group1}, {group2}] + // 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') { - throw new Error(`API error: ${data.message || 'Unknown error'}`); + if (!groups.length) { + console.warn('⚠️ API returned empty group list'); } - return data.response; + return groups; } catch (error) { console.error('❌ Failed to fetch groups:', { error: error instanceof Error ? error.message : String(error),