diff --git a/app/api/rocket-chat/messages/route.ts b/app/api/rocket-chat/messages/route.ts index ce6c71ae..9d2d3655 100644 --- a/app/api/rocket-chat/messages/route.ts +++ b/app/api/rocket-chat/messages/route.ts @@ -131,9 +131,18 @@ export async function GET() { return null; } + // Choose the appropriate endpoint based on room type + const endpoint = subscription.t === 'd' + ? 'im.messages' + : subscription.t === 'c' + ? 'channels.messages' + : 'groups.messages'; + + console.log(`Fetching messages for room ${subscription.name} using endpoint ${endpoint}`); + // Get the most recent messages from the room const messagesResponse = await fetch( - `https://parole.slm-lab.net/api/v1/rooms.get?roomId=${subscription.rid}`, + `https://parole.slm-lab.net/api/v1/${endpoint}?roomId=${subscription.rid}&count=1`, { headers: { 'X-Auth-Token': ROCKET_CHAT_TOKEN, @@ -144,25 +153,31 @@ export async function GET() { ); if (!messagesResponse.ok) { - console.error('Failed to fetch room info:', { + console.error('Failed to fetch messages:', { roomId: subscription.rid, + endpoint, status: messagesResponse.status, response: await messagesResponse.text().catch(() => 'Could not get response text') }); return null; } - const roomData = await messagesResponse.json(); + const messagesData = await messagesResponse.json(); + console.log(`Messages response for ${subscription.name}:`, { + count: messagesData.messages?.length, + success: messagesData.success + }); - if (roomData.room?.lastMessage) { + if (messagesData.messages && messagesData.messages.length > 0) { + const message = messagesData.messages[0]; return { - ...roomData.room.lastMessage, - roomName: subscription.name || roomData.room.fname || 'Direct Message', + ...message, + roomName: subscription.fname || subscription.name || 'Direct Message', roomType: subscription.t, }; } - console.log('No last message found for room:', subscription.rid); + console.log('No messages found for room:', subscription.rid); return null; } catch (error) { console.error('Error processing room:', subscription.rid, error);