* feat: implement tiered Intercom chat system replacing Plain - Add TieredIntercomChat component with customer tier detection - Add IntercomContactForm for free users using Intercom API - Add /api/intercom-conversation endpoint for free user support - Update UserDropdown to use tiered chat logic - Replace Plain chat with Intercom in app providers - Remove all Plain chat components and related files - Use useHasPaidPlan hook for customer tier detection Paying customers see Intercom widget, free users see contact form that creates conversations via Intercom API. Co-Authored-By: peer@cal.com <peer@cal.com> * fix: add missing environment variables to turbo.json globalEnv - Add NEXT_PUBLIC_WEBAPP_URL, NEXT_PUBLIC_WEBSITE_URL, NEXT_PUBLIC_STRIPE_PUBLIC_KEY - Add NEXT_PUBLIC_IS_E2E, NEXT_PUBLIC_STRIPE_PREMIUM_PLAN_PRICE_MONTHLY - Add NEXT_PUBLIC_BOOKER_NUMBER_OF_DAYS_TO_LOAD, NEXT_PUBLIC_STRIPE_CREDITS_PRICE_ID - Resolves turbo/no-undeclared-env-vars ESLint errors blocking commits Co-Authored-By: peer@cal.com <peer@cal.com> * fix: resolve linting errors in platform examples base package - Fix prettier/prettier formatting (quotes and comma) - Add underscore prefix to unused variables - Resolves CI failure in @calcom/base#lint check Co-Authored-By: peer@cal.com <peer@cal.com> * remove plain usage * placement fixes * fix: pop closing immediately issue * stuff * proper error and additional user info * add key to .env.example and remove unused plain route * fix conversation route * refactor intercom dynamic provider * code rabbit fixes * feat: introduce tiered support feature flag * fix: type check * Apply suggestion from @coderabbitai[bot] Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com> --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: Amit Sharma <74371312+Amit91848@users.noreply.github.com> Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com> Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
32 lines
1009 B
TypeScript
32 lines
1009 B
TypeScript
"use client";
|
|
|
|
import { TrpcProvider } from "app/_trpc/trpc-provider";
|
|
import { SessionProvider } from "next-auth/react";
|
|
import CacheProvider from "react-inlinesvg/provider";
|
|
|
|
import { WebPushProvider } from "@calcom/features/notifications/WebPushContext";
|
|
import { NotificationSoundHandler } from "@calcom/web/components/notification-sound-handler";
|
|
|
|
import useIsBookingPage from "@lib/hooks/useIsBookingPage";
|
|
|
|
type ProvidersProps = {
|
|
isEmbed: boolean;
|
|
children: React.ReactNode;
|
|
nonce: string | undefined;
|
|
};
|
|
export function Providers({ isEmbed, children, nonce }: ProvidersProps) {
|
|
const isBookingPage = useIsBookingPage();
|
|
|
|
return (
|
|
<SessionProvider>
|
|
<TrpcProvider>
|
|
{!isEmbed && !isBookingPage && <NotificationSoundHandler />}
|
|
{/* @ts-expect-error FIXME remove this comment when upgrading typescript to v5 */}
|
|
<CacheProvider>
|
|
<WebPushProvider>{children}</WebPushProvider>
|
|
</CacheProvider>
|
|
</TrpcProvider>
|
|
</SessionProvider>
|
|
);
|
|
}
|