Skip to content

Commit 961f297

Browse files
Nico-JpumfleetPeerRichemrysal
authored
No confirmation shall be needed when rescheduling events that need confirmation (#440)
* No reconfirmation needed when rescheduling * adapted success page * Parse query as string Co-authored-by: nicolas <[email protected]> Co-authored-by: Bailey Pumfleet <[email protected]> Co-authored-by: Peer_Rich <[email protected]> Co-authored-by: Alex van Andel <[email protected]>
1 parent 4c6bf96 commit 961f297

File tree

14 files changed

+40
-38
lines changed

14 files changed

+40
-38
lines changed

components/ImageUploader.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import Cropper from "react-easy-crop";
2-
import { useState, useCallback, useRef } from "react";
2+
import { useCallback, useRef, useState } from "react";
33
import Slider from "./Slider";
44

55
export default function ImageUploader({ target, id, buttonMsg, handleAvatarChange, imageRef }) {

components/team/EditTeam.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React, { useEffect, useState, useRef } from "react";
1+
import React, { useEffect, useRef, useState } from "react";
22
import { ArrowLeftIcon, PlusIcon, TrashIcon } from "@heroicons/react/outline";
33
import ErrorAlert from "@components/ui/alerts/Error";
44
import { UsernameInput } from "@components/ui/UsernameInput";

components/team/TeamListItem.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import {
2-
TrashIcon,
32
DotsHorizontalIcon,
3+
ExternalLinkIcon,
44
LinkIcon,
55
PencilAltIcon,
6-
ExternalLinkIcon,
6+
TrashIcon,
77
} from "@heroicons/react/outline";
88
import Dropdown, { DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger } from "../ui/Dropdown";
99
import { useState } from "react";

components/ui/Alert.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { XCircleIcon, InformationCircleIcon, CheckCircleIcon } from "@heroicons/react/solid";
1+
import { CheckCircleIcon, InformationCircleIcon, XCircleIcon } from "@heroicons/react/solid";
22
import classNames from "classnames";
33
import { ReactNode } from "react";
44

components/ui/Schedule/Schedule.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Text from "@components/ui/Text";
33
import { PlusIcon, TrashIcon } from "@heroicons/react/outline";
44
import dayjs, { Dayjs } from "dayjs";
55
import classnames from "classnames";
6+
67
export const SCHEDULE_FORM_ID = "SCHEDULE_FORM_ID";
78
export const toCalendsoAvailabilityFormat = (schedule: Schedule) => {
89
return schedule;

lib/calendarClient.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@ import { Credential } from "@prisma/client";
55
import CalEventParser from "./CalEventParser";
66
import { EventResult } from "@lib/events/EventManager";
77
import logger from "@lib/logger";
8-
9-
const log = logger.getChildLogger({ prefix: ["[lib] calendarClient"] });
108
import { CalDavCalendar } from "./integrations/CalDav/CalDavCalendarAdapter";
119
import { AppleCalendar } from "./integrations/Apple/AppleCalendarAdapter";
1210

11+
const log = logger.getChildLogger({ prefix: ["[lib] calendarClient"] });
12+
1313
// eslint-disable-next-line @typescript-eslint/no-var-requires
1414
const { google } = require("googleapis");
1515

lib/integrations/CalDav/CalDavCalendarAdapter.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
1-
import { IntegrationCalendar, CalendarApiAdapter, CalendarEvent } from "../../calendarClient";
1+
import { CalendarApiAdapter, CalendarEvent, IntegrationCalendar } from "../../calendarClient";
22
import { symmetricDecrypt } from "@lib/crypto";
33
import {
44
createAccount,
5-
fetchCalendars,
5+
createCalendarObject,
6+
deleteCalendarObject,
67
fetchCalendarObjects,
8+
fetchCalendars,
79
getBasicAuthHeaders,
8-
createCalendarObject,
910
updateCalendarObject,
10-
deleteCalendarObject,
1111
} from "tsdav";
1212
import { Credential } from "@prisma/client";
1313
import ICAL from "ical.js";
14-
import { createEvent, DurationObject, Attendee, Person } from "ics";
14+
import { Attendee, createEvent, DurationObject, Person } from "ics";
1515
import dayjs from "dayjs";
1616
import { v4 as uuidv4 } from "uuid";
1717
import { stripHtml } from "../../emails/helpers";

pages/api/book/event.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -242,13 +242,16 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
242242
}; // used for invitee emails
243243
}
244244

245+
// Initialize EventManager with credentials
246+
const rescheduleUid = req.body.rescheduleUid;
247+
245248
const bookingCreateInput: Prisma.BookingCreateInput = {
246249
uid,
247250
title: evt.title,
248251
startTime: dayjs(evt.startTime).toDate(),
249252
endTime: dayjs(evt.endTime).toDate(),
250253
description: evt.description,
251-
confirmed: !eventType.requiresConfirmation,
254+
confirmed: !eventType.requiresConfirmation || !!rescheduleUid,
252255
location: evt.location,
253256
eventType: {
254257
connect: {
@@ -375,9 +378,8 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
375378
}
376379
}
377380

378-
// Initialize EventManager with credentials
379381
const eventManager = new EventManager(user.credentials);
380-
const rescheduleUid = req.body.rescheduleUid;
382+
381383
if (rescheduleUid) {
382384
// Use EventManager to conditionally use all needed integrations.
383385
const updateResults: CreateUpdateResult = await eventManager.update(evt, rescheduleUid);
@@ -410,7 +412,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
410412
}
411413
}
412414

413-
if (eventType.requiresConfirmation) {
415+
if (eventType.requiresConfirmation && !rescheduleUid) {
414416
await new EventOrganizerRequestMail(evt, uid).sendEmail();
415417
}
416418

@@ -429,6 +431,6 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
429431
},
430432
});
431433

432-
// booking succesfull
434+
// booking successful
433435
return res.status(201).json(booking);
434436
}

pages/api/integrations/office365calendar/callback.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import type { NextApiRequest, NextApiResponse } from "next";
22
import { getSession } from "@lib/auth";
33
import prisma from "../../../../lib/prisma";
4+
45
const scopes = ["offline_access", "Calendars.Read", "Calendars.ReadWrite"];
56

67
export default async function handler(req: NextApiRequest, res: NextApiResponse) {

pages/event-types/[type].tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import Modal from "@components/Modal";
33
import React, { useEffect, useRef, useState } from "react";
44
import Select, { OptionTypeBase } from "react-select";
55
import prisma from "@lib/prisma";
6-
import { EventTypeCustomInput, EventTypeCustomInputType, SchedulingType } from "@prisma/client";
6+
import { Availability, EventTypeCustomInput, EventTypeCustomInputType, SchedulingType } from "@prisma/client";
77
import { LocationType } from "@lib/location";
88
import Shell from "@components/Shell";
99
import { getSession } from "@lib/auth";
@@ -28,7 +28,6 @@ import {
2828
import dayjs from "dayjs";
2929
import utc from "dayjs/plugin/utc";
3030
import timezone from "dayjs/plugin/timezone";
31-
import { Availability } from "@prisma/client";
3231
import { validJson } from "@lib/jsonUtils";
3332
import throttle from "lodash.throttle";
3433
import "react-dates/initialize";

0 commit comments

Comments
 (0)