Agenda refactor
This commit is contained in:
parent
82ad5f2f76
commit
8e775ceca7
@ -49,6 +49,7 @@ export async function GET(req: NextRequest) {
|
||||
});
|
||||
|
||||
// Get user's personal calendars
|
||||
// Include syncConfig to filter "Privée"/"Default" calendars that don't have active sync
|
||||
const personalCalendars = await prisma.calendar.findMany({
|
||||
where: {
|
||||
userId: session.user.id,
|
||||
@ -63,6 +64,17 @@ export async function GET(req: NextRequest) {
|
||||
include: {
|
||||
missionUsers: true
|
||||
}
|
||||
},
|
||||
syncConfig: {
|
||||
include: {
|
||||
mailCredential: {
|
||||
select: {
|
||||
id: true,
|
||||
email: true,
|
||||
display_name: true,
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
orderBy: {
|
||||
@ -70,6 +82,25 @@ export async function GET(req: NextRequest) {
|
||||
},
|
||||
});
|
||||
|
||||
// Filter out "Privée"/"Default" calendars that don't have active sync
|
||||
// This matches the logic in app/agenda/page.tsx
|
||||
const filteredPersonalCalendars = personalCalendars.filter(cal => {
|
||||
const isPrivateOrDefault = cal.name === "Privée" || cal.name === "Default";
|
||||
const hasActiveSync = cal.syncConfig?.syncEnabled === true && cal.syncConfig?.mailCredential;
|
||||
|
||||
// Exclude "Privée"/"Default" calendars that are not actively synced
|
||||
if (isPrivateOrDefault && !hasActiveSync) {
|
||||
logger.debug('[CALENDAR] Filtering out calendar without active sync', {
|
||||
calendarId: cal.id,
|
||||
calendarName: cal.name,
|
||||
syncEnabled: cal.syncConfig?.syncEnabled,
|
||||
hasMailCredential: !!cal.syncConfig?.mailCredential,
|
||||
});
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
|
||||
// Get mission calendars where user is associated via MissionUser
|
||||
const missionUserRelations = await prisma.missionUser.findMany({
|
||||
where: {
|
||||
@ -99,13 +130,13 @@ export async function GET(req: NextRequest) {
|
||||
|
||||
// Extract mission calendars (excluding those already in personalCalendars)
|
||||
// Use a Set to avoid duplicate calendars by ID
|
||||
const personalCalendarIds = new Set(personalCalendars.map(cal => cal.id));
|
||||
const personalCalendarIds = new Set(filteredPersonalCalendars.map(cal => cal.id));
|
||||
const missionCalendars = missionUserRelations
|
||||
.flatMap(mu => mu.mission.calendars)
|
||||
.filter(cal => !personalCalendarIds.has(cal.id)); // Exclude calendars already in personalCalendars
|
||||
|
||||
// Combine personal and mission calendars
|
||||
const calendars = [...personalCalendars, ...missionCalendars];
|
||||
const calendars = [...filteredPersonalCalendars, ...missionCalendars];
|
||||
|
||||
// Remove duplicate calendars by ID (in case same calendar appears multiple times)
|
||||
const uniqueCalendars = Array.from(
|
||||
@ -114,9 +145,10 @@ export async function GET(req: NextRequest) {
|
||||
|
||||
logger.debug('[CALENDAR] Fetched calendars with events', {
|
||||
userId: session.user.id,
|
||||
personalCount: personalCalendars.length,
|
||||
personalCount: filteredPersonalCalendars.length,
|
||||
missionCount: missionCalendars.length,
|
||||
totalCount: uniqueCalendars.length,
|
||||
filteredOut: personalCalendars.length - filteredPersonalCalendars.length,
|
||||
});
|
||||
|
||||
// Cache the results
|
||||
|
||||
Loading…
Reference in New Issue
Block a user