Fixing issues around workflows (#6991)

Co-authored-by: CarinaWolli <wollencarina@gmail.com>
This commit is contained in:
Carina WollendorferandCarinaWolli authored and GitHub committed 2023-02-13 12:39:06 +00:00
1 parent 9d9fa8e575
commit 1cae2b6f3d
4 files changed
+44 -4

No files matched your search

@@ -204,6 +204,11 @@ export const deleteScheduledEmailReminder = async (referenceId: string) => {
status: "cancel",
},
});
await client.request({
url: `/v3/user/scheduled_sends/${referenceId}`,
method: "DELETE",
});
} catch (error) {
console.log(`Error canceling reminder with error ${error}`);
}
@@ -100,7 +100,7 @@ function WorkflowPage() {
data: workflow,
isError,
error,
dataUpdatedAt,
isLoading,
} = trpc.viewer.workflows.get.useQuery(
{ id: +workflowId },
{
@@ -111,7 +111,7 @@ function WorkflowPage() {
const { data: verifiedNumbers } = trpc.viewer.workflows.getVerifiedNumbers.useQuery();
useEffect(() => {
if (workflow && (workflow.steps.length === 0 || workflow.steps[0].stepNumber === 1)) {
if (workflow && !isLoading) {
setSelectedEventTypes(
workflow.activeOn.map((active) => ({
value: String(active.eventType.id),
@@ -155,7 +155,7 @@ function WorkflowPage() {
form.setValue("activeOn", activeOn || []);
setIsAllDataLoaded(true);
}
}, [dataUpdatedAt]);
}, [isLoading]);
const updateMutation = trpc.viewer.workflows.update.useMutation({
onSuccess: async ({ workflow }) => {
@@ -10,6 +10,8 @@ import {
Workflow,
WorkflowsOnEventTypes,
WorkflowStep,
PrismaPromise,
WorkflowMethods,
} from "@prisma/client";
import type { TFunction } from "next-i18next";
import { z } from "zod";
@@ -18,11 +20,14 @@ import appStore from "@calcom/app-store";
import { getCalendar } from "@calcom/app-store/_utils/getCalendar";
import { DailyLocationType } from "@calcom/app-store/locations";
import { scheduleTrigger } from "@calcom/app-store/zapier/lib/nodeScheduler";
import { cancelScheduledJobs } from "@calcom/app-store/zapier/lib/nodeScheduler";
import EventManager from "@calcom/core/EventManager";
import { CalendarEventBuilder } from "@calcom/core/builders/CalendarEvent/builder";
import { CalendarEventDirector } from "@calcom/core/builders/CalendarEvent/director";
import { deleteMeeting } from "@calcom/core/videoClient";
import dayjs from "@calcom/dayjs";
import { deleteScheduledEmailReminder } from "@calcom/ee/workflows/lib/reminders/emailReminderManager";
import { deleteScheduledSMSReminder } from "@calcom/ee/workflows/lib/reminders/smsReminderManager";
import {
sendDeclinedEmails,
sendLocationChangeEmails,
@@ -405,6 +410,8 @@ export const bookingsRouter = router({
dynamicGroupSlugRef: true,
destinationCalendar: true,
smsReminderNumber: true,
scheduledJobs: true,
workflowReminders: true,
},
where: {
uid: bookingId,
@@ -472,6 +479,30 @@ export const bookingsRouter = router({
},
});
// delete scheduled jobs of cancelled bookings
cancelScheduledJobs(bookingToReschedule);
//cancel workflow reminders
const remindersToDelete: PrismaPromise<Prisma.BatchPayload>[] = [];
bookingToReschedule.workflowReminders.forEach((reminder) => {
if (reminder.scheduled && reminder.referenceId) {
if (reminder.method === WorkflowMethods.EMAIL) {
deleteScheduledEmailReminder(reminder.referenceId);
} else if (reminder.method === WorkflowMethods.SMS) {
deleteScheduledSMSReminder(reminder.referenceId);
}
}
const reminderToDelete = prisma.workflowReminder.deleteMany({
where: {
id: reminder.id,
},
});
remindersToDelete.push(reminderToDelete);
});
await Promise.all(remindersToDelete);
const [mainAttendee] = bookingToReschedule.attendees;
// @NOTE: Should we assume attendees language?
const tAttendees = await getTranslation(mainAttendee.locale ?? "en", "common");
@@ -856,7 +856,11 @@ export const workflowsRouter = router({
eventType: true,
},
},
steps: true,
steps: {
orderBy: {
stepNumber: "asc",
},
},
},
});