diff --git a/app/api/rocket-chat/messages/route.ts b/app/api/rocket-chat/messages/route.ts index f80a8238..69022d87 100644 --- a/app/api/rocket-chat/messages/route.ts +++ b/app/api/rocket-chat/messages/route.ts @@ -66,26 +66,6 @@ export async function GET(request: Request) { return NextResponse.json({ messages: [] }, { status: 200 }); } - // Get user's subscriptions using admin token - const subscriptionsResponse = await fetch(`${baseUrl}/api/v1/subscriptions.get`, { - method: 'GET', - headers: adminHeaders - }); - - if (!subscriptionsResponse.ok) { - console.error('Failed to get subscriptions:', subscriptionsResponse.status); - const errorText = await subscriptionsResponse.text(); - console.error('Subscriptions error details:', errorText); - return NextResponse.json({ messages: [] }, { status: 200 }); - } - - const subscriptionsData = await subscriptionsResponse.json(); - console.log('Subscriptions response:', { - success: subscriptionsData.success, - count: subscriptionsData.count, - subscriptionsCount: subscriptionsData.subscriptions?.length - }); - // Get all users to find the current user const usersResponse = await fetch(`${baseUrl}/api/v1/users.list`, { method: 'GET', @@ -121,8 +101,35 @@ export async function GET(request: Request) { id: currentUser._id }); + // Get user's subscriptions using admin token + const subscriptionsResponse = await fetch(`${baseUrl}/api/v1/subscriptions.get?query={"userId": "${currentUser._id}"}`, { + method: 'GET', + headers: adminHeaders + }); + + if (!subscriptionsResponse.ok) { + console.error('Failed to get subscriptions:', subscriptionsResponse.status); + const errorText = await subscriptionsResponse.text(); + console.error('Subscriptions error details:', errorText); + return NextResponse.json({ messages: [] }, { status: 200 }); + } + + const subscriptionsData = await subscriptionsResponse.json(); + console.log('Subscriptions response:', { + success: subscriptionsData.success, + count: subscriptionsData.count, + subscriptionsCount: subscriptionsData.subscriptions?.length, + update: subscriptionsData.update, + remove: subscriptionsData.remove + }); + + if (!subscriptionsData.success || !Array.isArray(subscriptionsData.update)) { + console.error('Invalid subscriptions response structure'); + return NextResponse.json({ messages: [] }, { status: 200 }); + } + // Filter subscriptions for the current user - const userSubscriptions = subscriptionsData.subscriptions.filter((sub: any) => + const userSubscriptions = subscriptionsData.update.filter((sub: any) => sub.u?._id === currentUser._id || (sub.userMentions > 0 && sub.alert) );