chore: Cleanup Close.com (#16929)
This commit is contained in:
@@ -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`);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
},
|
||||
},
|
||||
};
|
||||
}
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user