widget chat 18
This commit is contained in:
parent
45a00938db
commit
f9cdb6c2f0
@ -70,13 +70,17 @@ export async function GET(request: Request) {
|
|||||||
const messages: any[] = [];
|
const messages: any[] = [];
|
||||||
|
|
||||||
for (const subscription of subscriptionsData.update) {
|
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'}`);
|
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 endpoint = subscription.t === 'c' ? 'channels.messages' : 'im.messages';
|
||||||
const roomId = subscription.t === 'c' ? subscription.name : subscription.rid;
|
const roomId = subscription.t === 'c' ? subscription.name : subscription.rid;
|
||||||
|
|
||||||
|
// Only fetch the last message
|
||||||
const messagesResponse = await fetch(
|
const messagesResponse = await fetch(
|
||||||
`${baseUrl}/api/v1/${endpoint}?roomId=${roomId}`,
|
`${baseUrl}/api/v1/${endpoint}?roomId=${roomId}&count=1`,
|
||||||
{
|
{
|
||||||
headers: {
|
headers: {
|
||||||
'X-Auth-Token': session.rocketChatToken,
|
'X-Auth-Token': session.rocketChatToken,
|
||||||
@ -98,14 +102,27 @@ export async function GET(request: Request) {
|
|||||||
console.log(`Messages response for ${subscription.name}:`, messagesData);
|
console.log(`Messages response for ${subscription.name}:`, messagesData);
|
||||||
|
|
||||||
if (messagesData.messages && messagesData.messages.length > 0) {
|
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 {
|
} else {
|
||||||
console.log(`No messages found for room: ${roomId}`);
|
console.log(`No messages found for room: ${roomId}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log('Found messages:', messages.length);
|
// Sort messages by timestamp (newest first) and take only the first 6
|
||||||
return new Response(JSON.stringify({ messages }), {
|
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,
|
status: 200,
|
||||||
headers: { 'Content-Type': 'application/json' },
|
headers: { 'Content-Type': 'application/json' },
|
||||||
});
|
});
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user