feat: use getDirectConversations() for mention tab; pass conversations to template

This commit is contained in:
svemagie
2026-03-13 07:26:49 +01:00
parent ba144da14c
commit 51a8abb0a2
+26 -3
View File
@@ -5,6 +5,7 @@
import { getTimelineItems, countUnreadItems } from "../storage/timeline.js"; import { getTimelineItems, countUnreadItems } from "../storage/timeline.js";
import { import {
getNotifications, getNotifications,
getDirectConversations,
getUnreadNotificationCount, getUnreadNotificationCount,
getNotificationCountsByType, getNotificationCountsByType,
markAllNotificationsRead, markAllNotificationsRead,
@@ -138,6 +139,31 @@ export function notificationsController(mountPath) {
options.type = tab; options.type = tab;
} }
// CSRF token for action forms
const csrfToken = getToken(request.session);
// Direct messages tab uses conversation grouping instead of flat list
if (tab === "mention") {
const [conversations, unreadCount, tabCounts] = await Promise.all([
getDirectConversations(collections),
getUnreadNotificationCount(collections),
getNotificationCountsByType(collections),
]);
return response.render("activitypub-notifications", {
title: response.locals.__("activitypub.notifications.title"),
readerParent: { href: `${mountPath}/admin/reader`, text: response.locals.__("activitypub.reader.title") },
conversations,
items: [],
before: null,
tab,
tabCounts,
unreadCount,
csrfToken,
mountPath,
});
}
// Get filtered notifications + counts in parallel // Get filtered notifications + counts in parallel
const [result, unreadCount, tabCounts] = await Promise.all([ const [result, unreadCount, tabCounts] = await Promise.all([
getNotifications(collections, options), getNotifications(collections, options),
@@ -145,9 +171,6 @@ export function notificationsController(mountPath) {
getNotificationCountsByType(collections), getNotificationCountsByType(collections),
]); ]);
// CSRF token for action forms
const csrfToken = getToken(request.session);
response.render("activitypub-notifications", { response.render("activitypub-notifications", {
title: response.locals.__("activitypub.notifications.title"), title: response.locals.__("activitypub.notifications.title"),
readerParent: { href: `${mountPath}/admin/reader`, text: response.locals.__("activitypub.reader.title") }, readerParent: { href: `${mountPath}/admin/reader`, text: response.locals.__("activitypub.reader.title") },