diff --git a/packages/backend/server/src/plugins/calendar/providers/caldav.ts b/packages/backend/server/src/plugins/calendar/providers/caldav.ts index e42348d4da..8c7210ede8 100644 --- a/packages/backend/server/src/plugins/calendar/providers/caldav.ts +++ b/packages/backend/server/src/plugins/calendar/providers/caldav.ts @@ -1020,7 +1020,7 @@ export class CalDAVProvider extends CalendarProvider { if (response.ok) { return response.url; } - if ([404, 405].includes(response.status)) { + if ([400, 404, 405].includes(response.status)) { return serverUrl; } const text = await response.text(); diff --git a/packages/backend/server/src/plugins/calendar/resolver.ts b/packages/backend/server/src/plugins/calendar/resolver.ts index dbba85fac6..134c751fdf 100644 --- a/packages/backend/server/src/plugins/calendar/resolver.ts +++ b/packages/backend/server/src/plugins/calendar/resolver.ts @@ -1,6 +1,7 @@ import { Args, GraphQLISODateTime, + Int, Mutation, Parent, ResolveField, @@ -75,6 +76,22 @@ export class UserCalendarResolver { export class CalendarAccountResolver { constructor(private readonly calendar: CalendarService) {} + @ResolveField(() => Int) + async calendarsCount( + @CurrentUser() user: CurrentUser, + @Parent() account: CalendarAccountObjectType + ) { + if (typeof account.calendarsCount === 'number') { + return account.calendarsCount; + } + + const calendars = await this.calendar.listAccountCalendars( + user.id, + account.id + ); + return calendars.length; + } + @ResolveField(() => [CalendarSubscriptionObjectType]) async calendars( @CurrentUser() user: CurrentUser,