* feat: remove attendee endpoint * fix: remove attendee email from error logs to avoid logging PII Co-Authored-By: unknown <> * fix: add isBookingAuditEnabled to removeAttendee handler Align removeAttendee.handler.ts with the new onAttendeeRemoved interface that requires isBookingAuditEnabled, following the same pattern used in addGuests.handler.ts. Co-Authored-By: bot_apk <apk@cognition.ai> * style: apply biome formatting to conflict-resolved files Co-Authored-By: bot_apk <apk@cognition.ai> * chore: implement PR feedback * fixup * revert: biome formatting changes * chore: implement feedback part 1 * chore: implement feedback part 2 * fix: await cancellation email flow to prevent uncaught promise rejections The fire-and-forget .then() chain on prepareAttendeePerson() left rejections from that promise uncaught. Await both prepareAttendeePerson() and sendCancelledEmailToAttendee() so errors are properly handled. sendCancelledEmailToAttendee() already has an internal try/catch, so awaiting it will not cause the overall removeAttendee flow to fail on email errors. Addresses Cubic AI review (confidence 9/10). Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * chore: implement feedback part 3 * chore: implement devin feedback --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: bot_apk <apk@cognition.ai>
30 lines
1.2 KiB
TypeScript
30 lines
1.2 KiB
TypeScript
import { bindModuleToClassOnToken, createModule, type ModuleLoader } from "@calcom/features/di/di";
|
|
import { moduleLoader as featuresRepositoryModuleLoader } from "@calcom/features/di/modules/FeaturesRepository";
|
|
import { DI_TOKENS } from "@calcom/features/di/tokens";
|
|
import { BookingAttendeesRemoveService } from "../services/BookingAttendeesRemoveService";
|
|
import { moduleLoader as bookingAttendeeRepositoryModuleLoader } from "./BookingAttendeeRepository.module";
|
|
import { moduleLoader as bookingEventHandlerServiceModuleLoader } from "./BookingEventHandlerService.module";
|
|
|
|
const thisModule = createModule();
|
|
const token = DI_TOKENS.BOOKING_ATTENDEES_REMOVE_SERVICE;
|
|
const moduleToken = DI_TOKENS.BOOKING_ATTENDEES_REMOVE_SERVICE_MODULE;
|
|
|
|
const loadModule = bindModuleToClassOnToken({
|
|
module: thisModule,
|
|
moduleToken,
|
|
token,
|
|
classs: BookingAttendeesRemoveService,
|
|
depsMap: {
|
|
bookingEventHandlerService: bookingEventHandlerServiceModuleLoader,
|
|
featuresRepository: featuresRepositoryModuleLoader,
|
|
bookingAttendeeRepository: bookingAttendeeRepositoryModuleLoader,
|
|
},
|
|
});
|
|
|
|
export const moduleLoader: ModuleLoader = {
|
|
token,
|
|
loadModule,
|
|
};
|
|
|
|
export type { BookingAttendeesRemoveService };
|