From 6e2e252c49b7b8e64b28b26ea28d9bb2ef20eba9 Mon Sep 17 00:00:00 2001 From: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com> Date: Thu, 22 Sep 2022 13:18:27 +0530 Subject: [PATCH] feat: new filter added (#4612) * feat: new filter added * fix: type error * Update packages/ui/v2/core/layouts/BookingLayout.tsx Co-authored-by: Hariom Balhara Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com> --- apps/web/pages/bookings/[status].tsx | 1 + apps/web/pages/v2/bookings/[status].tsx | 3 ++- .../components/wipeMyCalActionButton.tsx | 2 +- packages/trpc/server/routers/viewer.tsx | 7 ++++++- packages/ui/v2/core/layouts/BookingLayout.tsx | 11 +++++------ 5 files changed, 15 insertions(+), 9 deletions(-) diff --git a/apps/web/pages/bookings/[status].tsx b/apps/web/pages/bookings/[status].tsx index ae8926c5bd..4b46b27143 100644 --- a/apps/web/pages/bookings/[status].tsx +++ b/apps/web/pages/bookings/[status].tsx @@ -28,6 +28,7 @@ const descriptionByStatus: Record = { recurring: "recurring_bookings", past: "past_bookings", cancelled: "cancelled_bookings", + unconfirmed: "unconfirmed_bookings", }; const querySchema = z.object({ diff --git a/apps/web/pages/v2/bookings/[status].tsx b/apps/web/pages/v2/bookings/[status].tsx index fab59be7ed..3ba8488dec 100644 --- a/apps/web/pages/v2/bookings/[status].tsx +++ b/apps/web/pages/v2/bookings/[status].tsx @@ -20,13 +20,14 @@ import SkeletonLoader from "@components/v2/bookings/SkeletonLoader"; type BookingListingStatus = inferQueryInput<"viewer.bookings">["status"]; type BookingOutput = inferQueryOutput<"viewer.bookings">["bookings"][0]; -const validStatuses = ["upcoming", "recurring", "past", "cancelled"] as const; +const validStatuses = ["upcoming", "recurring", "past", "cancelled", "unconfirmed"] as const; const descriptionByStatus: Record = { upcoming: "upcoming_bookings", recurring: "recurring_bookings", past: "past_bookings", cancelled: "cancelled_bookings", + unconfirmed: "unconfirmed_bookings", }; const querySchema = z.object({ diff --git a/packages/app-store/wipemycalother/components/wipeMyCalActionButton.tsx b/packages/app-store/wipemycalother/components/wipeMyCalActionButton.tsx index 30d05eb717..41b35ac8cb 100644 --- a/packages/app-store/wipemycalother/components/wipeMyCalActionButton.tsx +++ b/packages/app-store/wipemycalother/components/wipeMyCalActionButton.tsx @@ -7,7 +7,7 @@ import { ConfirmDialog } from "./confirmDialog"; interface IWipeMyCalActionButtonProps { bookingsEmpty: boolean; - bookingStatus: "upcoming" | "recurring" | "past" | "cancelled"; + bookingStatus: "upcoming" | "recurring" | "past" | "cancelled" | "unconfirmed"; } const WipeMyCalActionButton = (props: IWipeMyCalActionButtonProps) => { diff --git a/packages/trpc/server/routers/viewer.tsx b/packages/trpc/server/routers/viewer.tsx index 52fe4d578e..272593ff90 100644 --- a/packages/trpc/server/routers/viewer.tsx +++ b/packages/trpc/server/routers/viewer.tsx @@ -439,7 +439,7 @@ const loggedInViewerRouter = createProtectedRouter() }) .query("bookings", { input: z.object({ - status: z.enum(["upcoming", "recurring", "past", "cancelled"]), + status: z.enum(["upcoming", "recurring", "past", "cancelled", "unconfirmed"]), limit: z.number().min(1).max(100).nullish(), cursor: z.number().nullish(), // <-- "cursor" needs to exist when using useInfiniteQuery, but can be any type }), @@ -495,6 +495,10 @@ const loggedInViewerRouter = createProtectedRouter() { status: { equals: BookingStatus.REJECTED } }, ], }, + unconfirmed: { + endTime: { gte: new Date() }, + status: { equals: BookingStatus.PENDING }, + }, }; const bookingListingOrderby: Record< typeof bookingListingByStatus, @@ -504,6 +508,7 @@ const loggedInViewerRouter = createProtectedRouter() recurring: { startTime: "asc" }, past: { startTime: "desc" }, cancelled: { startTime: "desc" }, + unconfirmed: { startTime: "asc" }, }; const passedBookingsFilter = bookingListingFilters[bookingListingByStatus]; const orderBy = bookingListingOrderby[bookingListingByStatus]; diff --git a/packages/ui/v2/core/layouts/BookingLayout.tsx b/packages/ui/v2/core/layouts/BookingLayout.tsx index 50c01a4414..a7f67de982 100644 --- a/packages/ui/v2/core/layouts/BookingLayout.tsx +++ b/packages/ui/v2/core/layouts/BookingLayout.tsx @@ -14,12 +14,11 @@ const tabs: (VerticalTabItemProps | HorizontalTabItemProps)[] = [ href: "/bookings/upcoming", icon: Icon.FiCalendar, }, - // TODO: Add filter for unconfimred bookings in a future PR - Out of scope - // { - // name: "unconfirmed", - // href: "/bookings/unconfirmed", - // icon: Icon.FiInbox, - // }, + { + name: "unconfirmed", + href: "/bookings/unconfirmed", + icon: Icon.FiInbox, + }, { name: "recurring", href: "/bookings/recurring",