Adds banner to Opt-in to V2 UI (#4187)

This commit is contained in:
Omar López
2022-09-05 14:25:21 -06:00
committed by GitHub
parent 49a379ec6c
commit 8653e8eea5
3 changed files with 57 additions and 3 deletions
+11 -3
View File
@@ -4,9 +4,17 @@ import { ensureSession } from "@calcom/lib/auth";
import { defaultHandler, defaultResponder } from "@calcom/lib/server";
async function handler(req: NextApiRequest, res: NextApiResponse<Response>): Promise<void> {
const session = await ensureSession({ req });
/* Only admins can opt-in to V2 for now */
if (session.user.role === "ADMIN") res.setHeader("Set-Cookie", "calcom-v2-early-access=1; Path=/");
// Only logged in users can opt-in/out
await ensureSession({ req });
// If has the cookie, Opt-out of V2
if ("calcom-v2-early-access" in req.cookies && req.cookies["calcom-v2-early-access"] === "1") {
res.setHeader("Set-Cookie", `calcom-v2-early-access=0; Max-Age=0; Path=/`);
} else {
/* Opt-int to V2 */
res.setHeader("Set-Cookie", "calcom-v2-early-access=1; Path=/");
}
res.redirect("/");
}
@@ -0,0 +1,44 @@
import { Alert } from "@calcom/ui/Alert";
import { Alert as AlertV2 } from "@calcom/ui/v2/core/Alert";
function UserV2OptInBanner() {
// Only show on client-side
if (typeof document === "undefined") return null;
const hasV2OptInCookie = document.cookie.includes("calcom-v2-early-access=1");
if (hasV2OptInCookie)
return (
<AlertV2
severity="info"
title={
<>
You&apos;re using the new version of Cal.com.{" "}
<a href="/api/v2-opt-in" className="underline">
Go back to previous version
</a>
.
</>
}
className="mb-2"
/>
);
return (
<Alert
severity="info"
title={
<>
Want to try the new version of Cal.com?{" "}
<a href="/api/v2-opt-in" className="underline">
Opt-in to our V2 beta
</a>
.
</>
}
className="mb-2"
/>
);
}
export default UserV2OptInBanner;
+2
View File
@@ -11,6 +11,7 @@ import LicenseBanner from "@calcom/features/ee/common/components/LicenseBanner";
import TrialBanner from "@calcom/features/ee/common/components/TrialBanner";
import ImpersonatingBanner from "@calcom/features/ee/impersonation/components/ImpersonatingBanner";
import HelpMenuItem from "@calcom/features/ee/support/components/HelpMenuItem";
import UserV2OptInBanner from "@calcom/features/users/components/UserV2OptInBanner";
import CustomBranding from "@calcom/lib/CustomBranding";
import classNames from "@calcom/lib/classNames";
import { JOIN_SLACK, ROADMAP, WEBAPP_URL } from "@calcom/lib/constants";
@@ -137,6 +138,7 @@ const Layout = (props: LayoutProps) => {
<div className="flex h-screen overflow-hidden" data-testid="dashboard-shell">
{props.SidebarContainer || <SideBarContainer />}
<div className="flex w-0 flex-1 flex-col overflow-hidden">
<UserV2OptInBanner />
<ImpersonatingBanner />
<MainContainer {...props} />
</div>