refactor: bulk update modal logic shifted to web wrapper (#16315)
This commit is contained in:
1 parent
cf76cf7aae
commit
8a972a74c6
2 files changed
+31
-19
No files matched your search
@@ -1,5 +1,6 @@
|
||||
"use client";
|
||||
|
||||
import type { SetStateAction, Dispatch } from "react";
|
||||
import { useMemo, useState, useEffect } from "react";
|
||||
import { Controller, useFieldArray, useForm, useWatch } from "react-hook-form";
|
||||
|
||||
@@ -14,7 +15,6 @@ import { availabilityAsString } from "@calcom/lib/availability";
|
||||
import classNames from "@calcom/lib/classNames";
|
||||
import { useLocale } from "@calcom/lib/hooks/useLocale";
|
||||
import { sortAvailabilityStrings } from "@calcom/lib/weekstart";
|
||||
import { trpc } from "@calcom/trpc";
|
||||
import type { RouterOutputs } from "@calcom/trpc/react";
|
||||
import type { TimeRange, WorkingHours } from "@calcom/types/schedule";
|
||||
import {
|
||||
@@ -32,7 +32,6 @@ import {
|
||||
TimezoneSelect as WebTimezoneSelect,
|
||||
Tooltip,
|
||||
VerticalDivider,
|
||||
showToast,
|
||||
} from "@calcom/ui";
|
||||
import { Icon } from "@calcom/ui";
|
||||
|
||||
@@ -97,6 +96,12 @@ type AvailabilitySettingsProps = {
|
||||
customClassNames?: CustomClassNames;
|
||||
disableEditableHeading?: boolean;
|
||||
enableOverrides?: boolean;
|
||||
bulkUpdateModalProps?: {
|
||||
isOpen: boolean;
|
||||
setIsOpen: Dispatch<SetStateAction<boolean>>;
|
||||
save: ({ eventTypeIds }: { eventTypeIds: number[] }) => void;
|
||||
isSaving: boolean;
|
||||
};
|
||||
};
|
||||
|
||||
const DeleteDialogButton = ({
|
||||
@@ -246,21 +251,11 @@ export function AvailabilitySettings({
|
||||
customClassNames,
|
||||
disableEditableHeading = false,
|
||||
enableOverrides = false,
|
||||
bulkUpdateModalProps,
|
||||
}: AvailabilitySettingsProps) {
|
||||
const [openSidebar, setOpenSidebar] = useState(false);
|
||||
const [bulkUpdateModal, setBulkUpdateModal] = useState(false);
|
||||
const { t, i18n } = useLocale();
|
||||
|
||||
const utils = trpc.useUtils();
|
||||
const bulkUpdateDefaultAvailabilityMutation =
|
||||
trpc.viewer.availability.schedule.bulkUpdateToDefaultAvailability.useMutation({
|
||||
onSuccess: () => {
|
||||
utils.viewer.availability.list.invalidate();
|
||||
setBulkUpdateModal(false);
|
||||
showToast(t("success"), "success");
|
||||
},
|
||||
});
|
||||
|
||||
const form = useForm<AvailabilityFormValues>({
|
||||
defaultValues: {
|
||||
...schedule,
|
||||
@@ -353,7 +348,7 @@ export function AvailabilitySettings({
|
||||
checked={value}
|
||||
onCheckedChange={(checked) => {
|
||||
onChange(checked);
|
||||
setBulkUpdateModal(checked);
|
||||
bulkUpdateModalProps?.setIsOpen(checked);
|
||||
}}
|
||||
/>
|
||||
)}
|
||||
@@ -362,12 +357,12 @@ export function AvailabilitySettings({
|
||||
) : null}
|
||||
</div>
|
||||
|
||||
{bulkUpdateModal && (
|
||||
{bulkUpdateModalProps && bulkUpdateModalProps?.isOpen && (
|
||||
<BulkEditDefaultForEventsModal
|
||||
isPending={bulkUpdateDefaultAvailabilityMutation.isPending}
|
||||
open={bulkUpdateModal}
|
||||
setOpen={setBulkUpdateModal}
|
||||
bulkUpdateFunction={bulkUpdateDefaultAvailabilityMutation.mutate}
|
||||
isPending={bulkUpdateModalProps?.isSaving}
|
||||
open={bulkUpdateModalProps?.isOpen}
|
||||
setOpen={bulkUpdateModalProps.setIsOpen}
|
||||
bulkUpdateFunction={bulkUpdateModalProps?.save}
|
||||
/>
|
||||
)}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { useRouter } from "next/navigation";
|
||||
import { useState } from "react";
|
||||
|
||||
import { withErrorFromUnknown } from "@calcom/lib/getClientErrorFromUnknown";
|
||||
import { useCompatSearchParams } from "@calcom/lib/hooks/useCompatSearchParams";
|
||||
@@ -29,6 +30,16 @@ export const AvailabilitySettingsWebWrapper = () => {
|
||||
const { data: travelSchedules, isPending: isPendingTravelSchedules } =
|
||||
trpc.viewer.getTravelSchedules.useQuery();
|
||||
|
||||
const [isBulkUpdateModalOpen, setIsBulkUpdateModalOpen] = useState(false);
|
||||
const bulkUpdateDefaultAvailabilityMutation =
|
||||
trpc.viewer.availability.schedule.bulkUpdateToDefaultAvailability.useMutation({
|
||||
onSuccess: () => {
|
||||
utils.viewer.availability.list.invalidate();
|
||||
setIsBulkUpdateModalOpen(false);
|
||||
showToast(t("success"), "success");
|
||||
},
|
||||
});
|
||||
|
||||
const isDefaultSchedule = me.data?.defaultScheduleId === scheduleId;
|
||||
|
||||
const updateMutation = trpc.viewer.availability.schedule.update.useMutation({
|
||||
@@ -101,6 +112,12 @@ export const AvailabilitySettingsWebWrapper = () => {
|
||||
...values,
|
||||
});
|
||||
}}
|
||||
bulkUpdateModalProps={{
|
||||
isOpen: isBulkUpdateModalOpen,
|
||||
setIsOpen: setIsBulkUpdateModalOpen,
|
||||
save: bulkUpdateDefaultAvailabilityMutation.mutate,
|
||||
isSaving: bulkUpdateDefaultAvailabilityMutation.isPending,
|
||||
}}
|
||||
/>
|
||||
);
|
||||
};
|
||||
Reference in new issue
Block a user