Skip to content

Commit fe4ae3a

Browse files
authored
fix: {Organizer} placeholder in event title not updating on reschedule (#21034)
1 parent a245578 commit fe4ae3a

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

packages/features/bookings/lib/handleNewBooking.ts

+14-2
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ import {
5353
} from "@calcom/lib/delegationCredential/server";
5454
import { ErrorCode } from "@calcom/lib/errorCodes";
5555
import { getErrorFromUnknown } from "@calcom/lib/errors";
56-
import { getEventName } from "@calcom/lib/event";
56+
import { getEventName, updateHostInEventName } from "@calcom/lib/event";
5757
import { extractBaseEmail } from "@calcom/lib/extract-base-email";
5858
import { getBookerBaseUrl } from "@calcom/lib/getBookerUrl/server";
5959
import getOrgIdFromMemberOrTeamId from "@calcom/lib/getOrgIdFromMemberOrTeamId";
@@ -1262,6 +1262,19 @@ async function handler(
12621262
!!originalRescheduledBooking.rescheduled &&
12631263
originalRescheduledBooking.status === BookingStatus.CANCELLED;
12641264

1265+
if (
1266+
changedOrganizer &&
1267+
originalRescheduledBooking &&
1268+
originalRescheduledBooking?.user?.name &&
1269+
organizerUser?.name
1270+
) {
1271+
evt.title = updateHostInEventName(
1272+
originalRescheduledBooking.title,
1273+
originalRescheduledBooking.user.name,
1274+
organizerUser.name
1275+
);
1276+
}
1277+
12651278
let results: EventResult<AdditionalInformation & { url?: string; iCalUID?: string }>[] = [];
12661279
let referencesToCreate: PartialReference[] = [];
12671280

@@ -1430,7 +1443,6 @@ async function handler(
14301443
: [];
14311444

14321445
if (changedOrganizer) {
1433-
evt.title = getEventName(eventNameObject);
14341446
// location might changed and will be new created in eventManager.create (organizer default location)
14351447
evt.videoCallData = undefined;
14361448
// To prevent "The requested identifier already exists" error while updating event, we need to remove iCalUID

packages/features/bookings/lib/handleNewBooking/createBooking.ts

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ function updateEventDetails(
5757
originalRescheduledBooking: OriginalRescheduledBooking | null
5858
) {
5959
if (originalRescheduledBooking) {
60-
evt.title = originalRescheduledBooking?.title || evt.title;
6160
evt.description = originalRescheduledBooking?.description || evt.description;
6261
evt.location = evt.location || originalRescheduledBooking?.location;
6362
}

packages/features/bookings/lib/handleNewBooking/test/reschedule.test.ts

+5
Original file line numberDiff line numberDiff line change
@@ -2034,13 +2034,16 @@ describe("handleNewBooking", () => {
20342034

20352035
const { dateString: plus1DateString } = getDate({ dateIncrement: 1 });
20362036
const uidOfBookingToBeRescheduled = "n5Wv3eHgconAED2j4gcVhP";
2037+
const dynamicEventName = "{Scheduler} and {Organiser}: Team Meeting";
2038+
20372039
await createBookingScenario(
20382040
getScenarioData({
20392041
eventTypes: [
20402042
{
20412043
id: 1,
20422044
slotInterval: 15,
20432045
length: 15,
2046+
eventName: dynamicEventName,
20442047
users: [
20452048
{
20462049
id: 101,
@@ -2131,6 +2134,8 @@ describe("handleNewBooking", () => {
21312134
expect(createdBooking.startTime?.toISOString()).toBe(`${plus1DateString}T04:00:00.000Z`);
21322135
expect(createdBooking.endTime?.toISOString()).toBe(`${plus1DateString}T04:15:00.000Z`);
21332136

2137+
expect(createdBooking.title).toBe(`${booker.name} and ${roundRobinHost1.name}: Team Meeting`);
2138+
21342139
await expectBookingInDBToBeRescheduledFromTo({
21352140
from: {
21362141
uid: uidOfBookingToBeRescheduled,

packages/lib/event.ts

+17
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,23 @@ export function getEventName(eventNameObj: EventNameObjectType, forAttendeeView
110110
return dynamicEventName;
111111
}
112112

113+
export function updateHostInEventName(eventName: string, oldHost: string, newHost: string) {
114+
const oldHostFirstName = oldHost.split(" ")[0];
115+
const newHostFirstName = newHost.split(" ")[0];
116+
117+
if (!eventName.includes(oldHost) && !eventName.includes(oldHostFirstName)) {
118+
return eventName;
119+
}
120+
121+
let updatedEventName = eventName;
122+
123+
updatedEventName = updatedEventName.replace(oldHost, newHost);
124+
125+
updatedEventName = updatedEventName.replace(oldHostFirstName, newHostFirstName);
126+
127+
return updatedEventName;
128+
}
129+
113130
export const validateCustomEventName = (value: string, bookingFields?: Prisma.JsonObject | null) => {
114131
let customInputVariables: string[] = [];
115132
if (bookingFields) {

0 commit comments

Comments
 (0)