chore: Cleanup Close.com (#16929)

This commit is contained in:
Omar López
2024-11-13 15:14:31 -05:00
committed by GitHub
parent 81386d4ec0
commit 02cecd6707
19 changed files with 7 additions and 391 deletions
-3
View File
@@ -80,9 +80,6 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
},
});
// Sync Services: Close.com
// closeComUpdateTeam(prevTeam, team);
// redirect to team screen
res.redirect(302, `/settings/teams/${team.id}/onboard-members?event=team_created`);
}
-2
View File
@@ -118,8 +118,6 @@ export default class EventManager {
app.credentials.map((creds) => ({ ...creds, appName: app.name }))
);
// This includes all calendar-related apps, traditional calendars such as Google Calendar
// (type google_calendar) and non-traditional calendars such as CRMs like Close.com
// (type closecom_other_calendar)
this.calendarCredentials = appCredentials
.filter(
// Backwards compatibility until CRM manager is implemented
@@ -11,8 +11,6 @@ import { getLocaleFromRequest } from "@calcom/lib/getLocaleFromRequest";
import { HttpError } from "@calcom/lib/http-error";
import logger from "@calcom/lib/logger";
import { usernameHandler, type RequestWithUsernameStatus } from "@calcom/lib/server/username";
import { createWebUser as syncServicesCreateWebUser } from "@calcom/lib/sync/SyncServiceManager";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/lib/validateUsername";
import { prisma } from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
@@ -172,8 +170,6 @@ async function handler(req: RequestWithUsernameStatus, res: NextApiResponse) {
team,
});
closeComUpsertTeamUser(team, user, membership.role);
// Accept any child team invites for orgs.
if (team.parent) {
await joinAnyChildTeamOnOrgInvite({
@@ -210,8 +206,6 @@ async function handler(req: RequestWithUsernameStatus, res: NextApiResponse) {
language: await getLocaleFromRequest(req),
username: username || "",
});
// Sync Services
await syncServicesCreateWebUser(user);
}
if (checkoutSessionId) {
@@ -8,7 +8,6 @@ import { IS_PREMIUM_USERNAME_ENABLED } from "@calcom/lib/constants";
import logger from "@calcom/lib/logger";
import { isUsernameReservedDueToMigration } from "@calcom/lib/server/username";
import slugify from "@calcom/lib/slugify";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { validateAndGetCorrectedUsernameAndEmail } from "@calcom/lib/validateUsername";
import prisma from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
@@ -118,8 +117,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
team,
});
closeComUpsertTeamUser(team, user, membership.role);
// Accept any child team invites for orgs.
if (team.parent) {
await joinAnyChildTeamOnOrgInvite({
@@ -8,9 +8,9 @@ import { v5 as uuidv5 } from "uuid";
import processExternalId from "@calcom/app-store/_utils/calendars/processExternalId";
import { metadata as GoogleMeetMetadata } from "@calcom/app-store/googlevideo/_metadata";
import {
getLocationValueForDB,
MeetLocationType,
OrganizerDefaultConferencingAppType,
getLocationValueForDB,
} from "@calcom/app-store/locations";
import { DailyLocationType } from "@calcom/app-store/locations";
import { getAppFromSlug } from "@calcom/app-store/utils";
@@ -60,7 +60,6 @@ import { safeStringify } from "@calcom/lib/safeStringify";
import { DistributionMethod, getLuckyUser } from "@calcom/lib/server/getLuckyUser";
import { getTranslation } from "@calcom/lib/server/i18n";
import { WorkflowRepository } from "@calcom/lib/server/repository/workflow";
import { updateWebUser as syncServicesUpdateWebUser } from "@calcom/lib/sync/SyncServiceManager";
import { getTimeFormatStringFromUserTimeFormat } from "@calcom/lib/timeFormat";
import prisma from "@calcom/prisma";
import { BookingStatus, SchedulingType, WebhookTriggerEvents } from "@calcom/prisma/enums";
@@ -91,11 +90,11 @@ import { handleAppsStatus } from "./handleNewBooking/handleAppsStatus";
import { loadAndValidateUsers } from "./handleNewBooking/loadAndValidateUsers";
import { scheduleNoShowTriggers } from "./handleNewBooking/scheduleNoShowTriggers";
import type {
Invitee,
IEventTypePaymentCredentialType,
IsFixedAwareUser,
BookingType,
Booking,
BookingType,
IEventTypePaymentCredentialType,
Invitee,
IsFixedAwareUser,
} from "./handleNewBooking/types";
import { validateBookingTimeIsNotOutOfBounds } from "./handleNewBooking/validateBookingTimeIsNotOutOfBounds";
import { validateEventLength } from "./handleNewBooking/validateEventLength";
@@ -962,14 +961,6 @@ async function handler(
originalRescheduledBooking,
});
// @NOTE: Add specific try catch for all subsequent async calls to avoid error
// Sync Services
await syncServicesUpdateWebUser(
await prisma.user.findFirst({
where: { id: userId },
select: { id: true, email: true, name: true, username: true, createdDate: true },
})
);
evt.uid = booking?.uid ?? null;
evt.oneTimePassword = booking?.oneTimePassword ?? null;
@@ -8,7 +8,6 @@ import stripe from "@calcom/features/ee/payments/server/stripe";
import { WEBAPP_URL } from "@calcom/lib/constants";
import { HttpError } from "@calcom/lib/http-error";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
import { closeComUpdateTeam } from "@calcom/lib/sync/SyncServiceManager";
import prisma from "@calcom/prisma";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -66,9 +65,6 @@ async function handler(req: NextApiRequest, res: NextApiResponse) {
return res.status(statusCode).json({ message });
}
}
// Sync Services: Close.com
closeComUpdateTeam(prevTeam, team);
}
if (!metadata) {
@@ -1,7 +1,6 @@
import type { User } from "@prisma/client";
import { deleteStripeCustomer } from "@calcom/app-store/stripepayment/lib/customer";
import { deleteWebUser as syncServicesDeleteWebUser } from "@calcom/lib/sync/SyncServiceManager";
import prisma from "@calcom/prisma";
export async function deleteUser(user: Pick<User, "id" | "email" | "metadata">) {
@@ -9,12 +8,9 @@ export async function deleteUser(user: Pick<User, "id" | "email" | "metadata">)
await deleteStripeCustomer(user).catch(console.warn);
// Remove my account
// TODO: Move this to Repository pattern.
const deletedUser = await prisma.user.delete({
await prisma.user.delete({
where: {
id: user.id,
},
});
// Sync Services
syncServicesDeleteWebUser(deletedUser);
}
-168
View File
@@ -1,168 +0,0 @@
import logger from "@calcom/lib/logger";
import type { MembershipRole } from "@calcom/prisma/enums";
import { safeStringify } from "../safeStringify";
import type { ConsoleUserInfoType, TeamInfoType, WebUserInfoType } from "./ISyncService";
import services from "./services";
import CloseComService from "./services/CloseComService";
const log = logger.getSubLogger({ prefix: [`[[SyncServiceManager] `] });
export const createConsoleUser = async (user: ConsoleUserInfoType | null | undefined) => {
if (user) {
log.debug("createConsoleUser", safeStringify({ user }));
try {
Promise.all(
services.map(async (serviceClass) => {
const service = new serviceClass();
if (service.ready()) {
if (service.console.user.upsert) {
await service.console.user.upsert(user);
} else {
await service.console.user.create(user);
}
}
})
);
} catch (e) {
log.warn("createConsoleUser", safeStringify({ error: e }));
}
} else {
log.warn("createConsoleUser:noUser", safeStringify({ user }));
}
};
export const createWebUser = async (user: WebUserInfoType | null | undefined) => {
if (user) {
log.debug("createWebUser", safeStringify({ user }));
try {
Promise.all(
services.map(async (serviceClass) => {
const service = new serviceClass();
if (service.ready()) {
if (service.web.user.upsert) {
await service.web.user.upsert(user);
} else {
await service.web.user.create(user);
}
}
})
);
} catch (e) {
log.warn("createWebUser", safeStringify({ error: e }));
}
} else {
log.warn("createWebUser:noUser", safeStringify({ user }));
}
};
export const updateWebUser = async (user: WebUserInfoType | null | undefined) => {
if (user) {
log.debug("updateWebUser", safeStringify({ user }));
try {
Promise.all(
services.map(async (serviceClass) => {
const service = new serviceClass();
if (service.ready()) {
if (service.web.user.upsert) {
await service.web.user.upsert(user);
} else {
await service.web.user.update(user);
}
}
})
);
} catch (e) {
log.warn("updateWebUser", safeStringify({ error: e }));
}
} else {
log.warn("updateWebUser:noUser", safeStringify({ user }));
}
};
export const deleteWebUser = async (user: WebUserInfoType | null | undefined) => {
if (user) {
log.debug("deleteWebUser", { user });
try {
Promise.all(
services.map(async (serviceClass) => {
const service = new serviceClass();
if (service.ready()) {
await service.web.user.delete(user);
}
})
);
} catch (e) {
log.warn("deleteWebUser", e);
}
} else {
log.warn("deleteWebUser:noUser", { user });
}
};
export const closeComUpsertTeamUser = async (
team: TeamInfoType,
user: WebUserInfoType | null | undefined,
role: MembershipRole
) => {
if (user && team && role) {
log.debug("closeComUpsertTeamUser", { team, user, role });
try {
const closeComService = new CloseComService();
if (closeComService.ready()) {
await closeComService.web.team.create(team, user, role);
}
} catch (e) {
log.warn("closeComUpsertTeamUser", e);
}
} else {
log.warn("closeComUpsertTeamUser:noTeamOrUserOrRole", { team, user, role });
}
};
export const closeComDeleteTeam = async (team: TeamInfoType) => {
if (team) {
log.debug("closeComDeleteTeamUser", { team });
try {
const closeComService = new CloseComService();
if (closeComService.ready()) {
await closeComService.web.team.delete(team);
}
} catch (e) {
log.warn("closeComDeleteTeamUser", e);
}
} else {
log.warn("closeComDeleteTeamUser:noTeam");
}
};
export const closeComDeleteTeamMembership = async (user: WebUserInfoType | null | undefined) => {
if (user) {
log.debug("closeComDeleteTeamMembership", { user });
try {
const closeComService = new CloseComService();
if (closeComService.ready()) {
await closeComService.web.membership.delete(user);
}
} catch (e) {
log.warn("closeComDeleteTeamMembership", e);
}
} else {
log.warn("closeComDeleteTeamMembership:noUser");
}
};
export const closeComUpdateTeam = async (prevTeam: TeamInfoType, updatedTeam: TeamInfoType) => {
if (prevTeam && updatedTeam) {
try {
const closeComService = new CloseComService();
if (closeComService.ready()) {
await closeComService.web.team.update(prevTeam, updatedTeam);
}
} catch (e) {
log.warn("closeComUpdateTeam", e);
}
} else {
log.warn("closeComUpdateTeam:noPrevTeamOrUpdatedTeam");
}
};
@@ -1,143 +0,0 @@
import type { CloseComFieldOptions, CloseComLead } from "@calcom/lib/CloseCom";
import CloseCom from "@calcom/lib/CloseCom";
import { getCloseComContactIds, getCloseComLeadId, getCustomFieldsIds } from "@calcom/lib/CloseComeUtils";
import logger from "@calcom/lib/logger";
import type { TeamInfoType } from "@calcom/lib/sync/ISyncService";
import SyncServiceCore from "@calcom/lib/sync/ISyncService";
import type { ConsoleUserInfoType, WebUserInfoType } from "@calcom/lib/sync/ISyncService";
import type ISyncService from "@calcom/lib/sync/ISyncService";
import { MembershipRole } from "@calcom/prisma/enums";
// Cal.com Custom Contact Fields
const calComCustomContactFields: CloseComFieldOptions = [
// Field name, field type, required?, multiple values?
["Username", "text", false, false],
["Plan", "text", true, false],
["Last booking", "date", false, false],
["Created at", "date", true, false],
];
const calComSharedFields: CloseComFieldOptions = [["Contact Role", "text", false, false]];
const serviceName = "closecom_service";
export default class CloseComService extends SyncServiceCore implements ISyncService {
protected declare service: CloseCom;
constructor() {
super(serviceName, CloseCom, logger.getSubLogger({ prefix: [`[[sync] ${serviceName}`] }));
}
upsertAnyUser = async (
user: WebUserInfoType | ConsoleUserInfoType,
leadInfo?: CloseComLead,
role?: string
) => {
this.log.debug("sync:closecom:user", { user });
// Get Cal.com Lead
const leadId = await getCloseComLeadId(this.service, leadInfo);
this.log.debug("sync:closecom:user:leadId", { leadId });
// Get Contacts ids: already creates contacts
const [contactId] = await getCloseComContactIds([user], this.service, leadId);
this.log.debug("sync:closecom:user:contactsIds", { contactId });
// Get Custom Contact fields ids
const customFieldsIds = await getCustomFieldsIds("contact", calComCustomContactFields, this.service);
this.log.debug("sync:closecom:user:customFieldsIds", { customFieldsIds });
// Get shared fields ids
const sharedFieldsIds = await getCustomFieldsIds("shared", calComSharedFields, this.service);
this.log.debug("sync:closecom:user:sharedFieldsIds", { sharedFieldsIds });
const allFields = customFieldsIds.concat(sharedFieldsIds);
this.log.debug("sync:closecom:user:allFields", { allFields });
const lastBooking = "email" in user ? await this.getUserLastBooking(user) : null;
this.log.debug("sync:closecom:user:lastBooking", { lastBooking });
const username = "username" in user ? user.username : null;
// Prepare values for each Custom Contact Fields
const allFieldsValues = [
username, // Username
user.plan, // Plan
lastBooking && lastBooking.booking
? new Date(lastBooking.booking.createdAt).toLocaleDateString("en-US")
: null, // Last Booking
user.createdDate,
role === MembershipRole.OWNER ? "Point of Contact" : "",
];
this.log.debug("sync:closecom:contact:allFieldsValues", { allFieldsValues });
// Preparing Custom Activity Instance data for Close.com
const person = Object.assign(
{},
{
person: user,
lead_id: leadId,
contactId,
},
...allFields.map((fieldId: string, index: number) => {
return {
[`custom.${fieldId}`]: allFieldsValues[index],
};
})
);
// Create Custom Activity type instance
return await this.service.contact.update(person);
};
public console = {
user: {
upsert: async (consoleUser: ConsoleUserInfoType) => {
return this.upsertAnyUser(consoleUser);
},
},
};
public web = {
user: {
upsert: async (webUser: WebUserInfoType) => {
return this.upsertAnyUser(webUser);
},
delete: async (webUser: WebUserInfoType) => {
this.log.debug("sync:closecom:web:user:delete", { webUser });
const [contactId] = await getCloseComContactIds([webUser], this.service);
this.log.debug("sync:closecom:web:user:delete:contactId", { contactId });
if (contactId) {
return this.service.contact.delete(contactId);
} else {
throw Error("Web user not found in service");
}
},
},
team: {
create: async (team: TeamInfoType, webUser: WebUserInfoType, role: MembershipRole) => {
return this.upsertAnyUser(
webUser,
{
companyName: team.name,
},
role
);
},
delete: async (team: TeamInfoType) => {
this.log.debug("sync:closecom:web:team:delete", { team });
const leadId = await getCloseComLeadId(this.service, { companyName: team.name });
this.log.debug("sync:closecom:web:team:delete:leadId", { leadId });
this.service.lead.delete(leadId);
},
update: async (prevTeam: TeamInfoType, updatedTeam: TeamInfoType) => {
this.log.debug("sync:closecom:web:team:update", { prevTeam, updatedTeam });
const leadId = await getCloseComLeadId(this.service, { companyName: prevTeam.name });
this.log.debug("sync:closecom:web:team:update:leadId", { leadId });
this.service.lead.update(leadId, { companyName: updatedTeam.name });
},
},
membership: {
delete: async (webUser: WebUserInfoType) => {
this.log.debug("sync:closecom:web:membership:delete", { webUser });
const [contactId] = await getCloseComContactIds([webUser], this.service);
this.log.debug("sync:closecom:web:membership:delete:contactId", { contactId });
if (contactId) {
return this.service.contact.delete(contactId);
} else {
throw Error("Web user not found in service");
}
},
},
};
}
-1
View File
@@ -2,7 +2,6 @@ import type { ISyncServices } from "../ISyncService";
import SendgridService from "./SendgridService";
const services: ISyncServices[] = [
//CloseComService, This service gets a special treatment after deciding it shouldn't get the same treatment as Sendgrid
// eslint-disable-next-line @typescript-eslint/no-explicit-any
SendgridService as any,
];
@@ -1,6 +1,5 @@
import { deleteStripeCustomer } from "@calcom/app-store/stripepayment/lib/customer";
import { ErrorCode } from "@calcom/features/auth/lib/ErrorCode";
import { deleteWebUser as syncServicesDeleteWebUser } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { IdentityProvider } from "@calcom/prisma/enums";
import type { TrpcSessionUser } from "@calcom/trpc/server/trpc";
@@ -33,13 +32,11 @@ export const deleteMeWithoutPasswordHandler = async ({ ctx }: DeleteMeWithoutPas
await deleteStripeCustomer(user).catch(console.warn);
// Remove my account
const deletedUser = await prisma.user.delete({
await prisma.user.delete({
where: {
id: ctx.user.id,
},
});
// Sync Services
syncServicesDeleteWebUser(deletedUser);
return;
};
@@ -16,7 +16,6 @@ import { checkUsername } from "@calcom/lib/server/checkUsername";
import { updateNewTeamMemberEventTypes } from "@calcom/lib/server/queries";
import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image";
import slugify from "@calcom/lib/slugify";
import { updateWebUser as syncServicesUpdateWebUser } from "@calcom/lib/sync/SyncServiceManager";
import { validateBookerLayouts } from "@calcom/lib/validateBookerLayouts";
import { prisma } from "@calcom/prisma";
import { userMetadata as userMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -282,9 +281,6 @@ export const updateProfileHandler = async ({ ctx, input }: UpdateProfileOptions)
});
}
// Sync Services
await syncServicesUpdateWebUser(updatedUser);
// Notify stripe about the change
if (updatedUser && updatedUser.metadata && hasKeyInMetadata(updatedUser, "stripeCustomerId")) {
const stripeCustomerId = `${updatedUser.metadata.stripeCustomerId}`;
@@ -314,9 +314,6 @@ export const createHandler = async ({ input, ctx }: CreateOptions) => {
upId: user.profile.upId,
};
}
// Sync Services: Close.com
//closeComUpsertOrganizationUser(createTeam, ctx.user, MembershipRole.OWNER);
};
export default createHandler;
@@ -2,7 +2,6 @@ import { getRequestedSlugError } from "@calcom/app-store/stripepayment/lib/team-
import { purchaseTeamOrOrgSubscription } from "@calcom/features/ee/teams/lib/payments";
import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants";
import { isOrganisationAdmin } from "@calcom/lib/server/queries/organisations";
import { closeComUpdateTeam } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -80,9 +79,6 @@ export const publishHandler = async ({ ctx }: PublishOptions) => {
throw new TRPCError({ code: "INTERNAL_SERVER_ERROR", message });
}
// Sync Services: Close.com
closeComUpdateTeam(prevTeam, updatedTeam);
return {
url: `${WEBAPP_URL}/settings/organization/profile`,
message: "Team published successfully",
@@ -5,7 +5,6 @@ import { getMetadataHelpers } from "@calcom/lib/getMetadataHelpers";
import { uploadLogo } from "@calcom/lib/server/avatar";
import { isOrganisationAdmin } from "@calcom/lib/server/queries/organisations";
import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image";
import { closeComUpdateTeam } from "@calcom/lib/sync/SyncServiceManager";
import type { PrismaClient } from "@calcom/prisma";
import { prisma } from "@calcom/prisma";
import { UserPermissionRole } from "@calcom/prisma/enums";
@@ -197,9 +196,6 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => {
return updatedOrganisation;
});
// Sync Services: Close.com
if (prevOrganisation) closeComUpdateTeam(prevOrganisation, updatedOrganisation);
return { update: true, userId: ctx.user.id, data: updatedOrganisation };
};
@@ -1,8 +1,6 @@
import { createAProfileForAnExistingUser } from "@calcom/lib/createAProfileForAnExistingUser";
import { updateNewTeamMemberEventTypes } from "@calcom/lib/server/queries";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { MembershipRole } from "@calcom/prisma/enums";
import type { TrpcSessionUser } from "@calcom/trpc/server/trpc";
import type { TAcceptOrLeaveInputSchema } from "./acceptOrLeave.schema";
@@ -58,15 +56,8 @@ export const acceptOrLeaveHandler = async ({ ctx, input }: AcceptOrLeaveOptions)
});
}
await updateNewTeamMemberEventTypes(ctx.user.id, input.teamId);
closeComUpsertTeamUser(team, ctx.user, teamMembership.role);
} else {
try {
//get team owner so we can alter their subscription seat count
const ownerMembership = await prisma.membership.findFirst({
where: { teamId: input.teamId, role: MembershipRole.OWNER },
include: { team: true },
});
const membership = await prisma.membership.delete({
where: {
userId_teamId: { userId: ctx.user.id, teamId: input.teamId },
@@ -83,9 +74,6 @@ export const acceptOrLeaveHandler = async ({ ctx, input }: AcceptOrLeaveOptions)
},
});
}
// Sync Services: Close.com
if (ownerMembership) closeComUpsertTeamUser(ownerMembership.team, ctx.user, membership.role);
} catch (e) {
console.log(e);
}
@@ -1,5 +1,4 @@
import { isTeamAdmin, isTeamOwner } from "@calcom/lib/server/queries/teams";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { MembershipRole } from "@calcom/prisma/enums";
import type { TrpcSessionUser } from "@calcom/trpc/server/trpc";
@@ -68,9 +67,6 @@ export const changeMemberRoleHandler = async ({ ctx, input }: ChangeMemberRoleOp
user: true,
},
});
// Sync Services: Close.com
closeComUpsertTeamUser(membership.team, membership.user, membership.role);
};
export default changeMemberRoleHandler;
@@ -3,7 +3,6 @@ import { IS_TEAM_BILLING_ENABLED, WEBAPP_URL } from "@calcom/lib/constants";
import { uploadLogo } from "@calcom/lib/server/avatar";
import { ProfileRepository } from "@calcom/lib/server/repository/profile";
import { resizeBase64Image } from "@calcom/lib/server/resizeBase64Image";
import { closeComUpsertTeamUser } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { MembershipRole } from "@calcom/prisma/enums";
@@ -122,8 +121,6 @@ export const createHandler = async ({ ctx, input }: CreateOptions) => {
},
});
}
// Sync Services: Close.com
closeComUpsertTeamUser(createdTeam, ctx.user, MembershipRole.OWNER);
return {
url: `${WEBAPP_URL}/settings/teams/${createdTeam.id}/onboard-members`,
@@ -5,7 +5,6 @@ import { validateIntervalLimitOrder } from "@calcom/lib";
import { IS_TEAM_BILLING_ENABLED } from "@calcom/lib/constants";
import { uploadLogo } from "@calcom/lib/server/avatar";
import { isTeamAdmin } from "@calcom/lib/server/queries/teams";
import { closeComUpdateTeam } from "@calcom/lib/sync/SyncServiceManager";
import { prisma } from "@calcom/prisma";
import { RedirectType } from "@calcom/prisma/enums";
import { teamMetadataSchema } from "@calcom/prisma/zod-utils";
@@ -136,9 +135,6 @@ export const updateHandler = async ({ ctx, input }: UpdateOptions) => {
});
}
// Sync Services: Close.com
if (prevTeam) closeComUpdateTeam(prevTeam, updatedTeam);
return {
logoUrl: updatedTeam.logoUrl,
name: updatedTeam.name,