feat: add response status to calendar event host details (#21934)

* feat: add response status to calendar event host details

* docs: update calendar event response status description from attendee to host
This commit is contained in:
Somay Chauhan
2025-06-20 07:23:18 +00:00
committed by GitHub
parent 956fd6ae2f
commit 795fd788e2
4 changed files with 44 additions and 22 deletions
@@ -211,6 +211,18 @@ export class CalendarEventHost {
description: "Display name of the event host",
})
name?: string;
@IsString()
@IsOptional()
@IsEnum(CalendarEventResponseStatus)
@ApiPropertyOptional({
enum: CalendarEventResponseStatus,
nullable: true,
enumName: "CalendarEventResponseStatus",
description: "Host's response to the invitation",
example: CalendarEventResponseStatus.ACCEPTED,
})
responseStatus!: CalendarEventResponseStatus | null;
}
export class CalendarEventAttendee {
@@ -159,28 +159,28 @@ export class GoogleCalendarEventOutputPipe
}
}
private transformHosts(googleEvent: GoogleCalendarEventResponse): Array<{ email: string; name?: string }> {
if (googleEvent.organizer) {
return [
{
email: googleEvent.organizer.email,
name: googleEvent.organizer.displayName,
},
];
} else if (googleEvent.attendees) {
// If no explicit organizer, find the first attendee with organizer flag
const organizerAttendee = googleEvent.attendees.find((attendee) => attendee.organizer);
if (organizerAttendee) {
return [
{
email: organizerAttendee.email,
name: organizerAttendee.displayName,
},
];
}
private transformHosts(googleEvent: GoogleCalendarEventResponse) {
const hosts: Array<{ email: string; name?: string; responseStatus: CalendarEventResponseStatus | null }> =
[];
const organizerAttendees = googleEvent?.attendees?.filter((attendee) => attendee.organizer);
if (organizerAttendees?.length) {
organizerAttendees.forEach((organizer) => {
hosts.push({
email: organizer.email,
name: organizer.displayName,
responseStatus: this.transformAttendeeResponseStatus(organizer.responseStatus),
});
});
} else {
hosts.push({
email: googleEvent.organizer.email,
name: googleEvent.organizer.displayName,
responseStatus: null,
});
}
return [];
return hosts;
}
private transformLocations(
+6 -1
View File
@@ -26400,7 +26400,7 @@
},
"CalendarEventResponseStatus": {
"type": "string",
"description": "Attendee's response to the invitation",
"description": "Host's response to the invitation",
"enum": [
"accepted",
"pending",
@@ -26460,6 +26460,11 @@
"type": "string",
"nullable": true,
"description": "Display name of the event host"
},
"responseStatus": {
"nullable": true,
"example": "accepted",
"$ref": "#/components/schemas/CalendarEventResponseStatus"
}
},
"required": [
+6 -1
View File
@@ -24102,7 +24102,7 @@
},
"CalendarEventResponseStatus": {
"type": "string",
"description": "Attendee's response to the invitation",
"description": "Host's response to the invitation",
"enum": ["accepted", "pending", "declined", "needsAction"]
},
"CalendarEventAttendee": {
@@ -24150,6 +24150,11 @@
"type": "string",
"nullable": true,
"description": "Display name of the event host"
},
"responseStatus": {
"nullable": true,
"example": "accepted",
"$ref": "#/components/schemas/CalendarEventResponseStatus"
}
},
"required": ["email"]