widget chat 18

This commit is contained in:
Alma 2025-04-11 12:13:41 +02:00
parent 45a00938db
commit f9cdb6c2f0

View File

@ -70,13 +70,17 @@ export async function GET(request: Request) {
const messages: any[] = [];
for (const subscription of subscriptionsData.update) {
// Skip if we already have 6 messages
if (messages.length >= 6) break;
console.log(`Fetching messages for room ${subscription.name} using endpoint ${subscription.t === 'c' ? 'channels.messages' : 'im.messages'}`);
const endpoint = subscription.t === 'c' ? 'channels.messages' : 'im.messages';
const roomId = subscription.t === 'c' ? subscription.name : subscription.rid;
// Only fetch the last message
const messagesResponse = await fetch(
`${baseUrl}/api/v1/${endpoint}?roomId=${roomId}`,
`${baseUrl}/api/v1/${endpoint}?roomId=${roomId}&count=1`,
{
headers: {
'X-Auth-Token': session.rocketChatToken,
@ -98,14 +102,27 @@ export async function GET(request: Request) {
console.log(`Messages response for ${subscription.name}:`, messagesData);
if (messagesData.messages && messagesData.messages.length > 0) {
messages.push(...messagesData.messages);
const lastMessage = messagesData.messages[0];
messages.push({
...lastMessage,
roomName: subscription.fname || subscription.name || 'Direct Message',
roomType: subscription.t,
unread: subscription.unread || 0,
userMentions: subscription.userMentions || 0,
groupMentions: subscription.groupMentions || 0,
alert: subscription.alert || false
});
} else {
console.log(`No messages found for room: ${roomId}`);
}
}
console.log('Found messages:', messages.length);
return new Response(JSON.stringify({ messages }), {
// Sort messages by timestamp (newest first) and take only the first 6
messages.sort((a, b) => new Date(b.ts).getTime() - new Date(a.ts).getTime());
const limitedMessages = messages.slice(0, 6);
console.log('Found messages:', limitedMessages.length);
return new Response(JSON.stringify({ messages: limitedMessages }), {
status: 200,
headers: { 'Content-Type': 'application/json' },
});