diff --git a/app/api/rocket-chat/messages/route.ts b/app/api/rocket-chat/messages/route.ts index ecc60e48..35486cb6 100644 --- a/app/api/rocket-chat/messages/route.ts +++ b/app/api/rocket-chat/messages/route.ts @@ -154,13 +154,16 @@ export async function GET(request: Request) { // Fetch messages using admin token for (const subscription of userSubscriptions) { - if (messages.length >= 6 || processedRooms.has(subscription._id)) continue; + if (messages.length >= 7 || processedRooms.has(subscription._id)) continue; processedRooms.add(subscription._id); try { + // Determine the correct endpoint based on room type + const endpoint = subscription.t === 'c' ? 'channels.messages' : 'im.messages'; + // Get the latest messages from the room const messagesResponse = await fetch( - `${baseUrl}/api/v1/channels.messages?roomId=${subscription.rid}&count=1`, { + `${baseUrl}/api/v1/${endpoint}?roomId=${subscription.rid}&count=1`, { method: 'GET', headers: adminHeaders }); @@ -193,7 +196,8 @@ export async function GET(request: Request) { roomType: subscription.t, unread: subscription.unread || 0, userMentions: subscription.userMentions || 0, - alert: subscription.alert || false + alert: subscription.alert || false, + lastSeen: subscription.ls }); } } catch (error) { @@ -202,9 +206,9 @@ export async function GET(request: Request) { } } - // Sort messages by timestamp (newest first) and limit to 6 + // Sort messages by timestamp (newest first) and limit to 7 messages.sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime()); - const limitedMessages = messages.slice(0, 6); + const limitedMessages = messages.slice(0, 7); return NextResponse.json({ messages: limitedMessages }, { status: 200 }); } catch (error) {