From a12ab5bb65bc6df9d09d5ff2a6f8ecb4079ea385 Mon Sep 17 00:00:00 2001 From: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:31:45 +0530 Subject: [PATCH] chore: add database-backed feature flag for sidebar tips section (#26516) * chore: remove tips section from sidebar Co-Authored-By: amit@cal.com * chore: add feature flag for sidebar tips section Co-Authored-By: amit@cal.com * chore: use database-backed feature flag for sidebar tips section Co-Authored-By: amit@cal.com --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- apps/web/modules/shell/SideBar.tsx | 10 +++++++--- packages/features/flags/config.ts | 1 + packages/features/flags/hooks/index.ts | 1 + .../migration.sql | 3 +++ 4 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 packages/prisma/migrations/20260109090244_seed_sidebar_tips_feature/migration.sql diff --git a/apps/web/modules/shell/SideBar.tsx b/apps/web/modules/shell/SideBar.tsx index e8df86c3a5..7efba9da27 100644 --- a/apps/web/modules/shell/SideBar.tsx +++ b/apps/web/modules/shell/SideBar.tsx @@ -5,6 +5,7 @@ import Link from "next/link"; import { usePathname } from "next/navigation"; import { getBookerBaseUrlSync } from "@calcom/features/ee/organizations/lib/getBookerBaseUrlSync"; +import { useFlagMap } from "@calcom/features/flags/context/provider"; import { IS_VISUAL_REGRESSION_TESTING, ENABLE_PROFILE_SWITCHER } from "@calcom/lib/constants"; import { getPlaceholderAvatar } from "@calcom/lib/defaultAvatarImage"; import { useLocale } from "@calcom/lib/hooks/useLocale"; @@ -56,6 +57,7 @@ export function SideBar({ bannersHeight, user }: SideBarProps) { const pathname = usePathname(); const isPlatformPages = pathname?.startsWith("/settings/platform"); const isAdmin = session.data?.user.role === UserPermissionRole.ADMIN; + const flags = useFlagMap(); const publicPageUrl = `${getBookerBaseUrlSync(user?.org?.slug ?? null)}/${user?.orgAwareUsername}`; @@ -137,9 +139,11 @@ export function SideBar({ bannersHeight, user }: SideBarProps) { {!isPlatformPages && (
-
- -
+ {flags["sidebar-tips"] && ( +
+ +
+ )} {bottomNavItems.map((item, index) => ( ; diff --git a/packages/features/flags/hooks/index.ts b/packages/features/flags/hooks/index.ts index be85420d87..d114eb0a47 100644 --- a/packages/features/flags/hooks/index.ts +++ b/packages/features/flags/hooks/index.ts @@ -33,6 +33,7 @@ const initialData: AppFlags = { "booking-email-sms-tasker": false, "bookings-v3": false, "booking-audit": false, + "sidebar-tips": false, }; if (process.env.NEXT_PUBLIC_IS_E2E) { diff --git a/packages/prisma/migrations/20260109090244_seed_sidebar_tips_feature/migration.sql b/packages/prisma/migrations/20260109090244_seed_sidebar_tips_feature/migration.sql new file mode 100644 index 0000000000..a10f2b56de --- /dev/null +++ b/packages/prisma/migrations/20260109090244_seed_sidebar_tips_feature/migration.sql @@ -0,0 +1,3 @@ +INSERT INTO "Feature" (slug, enabled, description, "type") +VALUES ('sidebar-tips', false, 'Enables the tips section in the sidebar.', 'OPERATIONAL') +ON CONFLICT (slug) DO NOTHING;