/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { useState } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; import { MessageSquare } from "lucide-react"; import type { IFormattedInstanceConfiguration } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; // hooks import { useInstance } from "@/hooks/store"; type TIntercomConfig = { isTelemetryEnabled: boolean; }; export const IntercomConfig = observer(function IntercomConfig(props: TIntercomConfig) { const { isTelemetryEnabled } = props; // hooks const { instanceConfigurations, updateInstanceConfigurations, fetchInstanceConfigurations } = useInstance(); // states const [isSubmitting, setIsSubmitting] = useState(false); // derived values const isIntercomEnabled = isTelemetryEnabled ? instanceConfigurations ? instanceConfigurations?.find((config) => config.key === "IS_INTERCOM_ENABLED")?.value === "1" ? true : false : undefined : false; const { isLoading } = useSWR(isTelemetryEnabled ? "INSTANCE_CONFIGURATIONS" : null, () => isTelemetryEnabled ? fetchInstanceConfigurations() : null ); const initialLoader = isLoading && isIntercomEnabled === undefined; const submitInstanceConfigurations = async (payload: Partial) => { try { await updateInstanceConfigurations(payload); } catch (error) { console.error(error); } finally { setIsSubmitting(false); } }; const enableIntercomConfig = () => { void submitInstanceConfigurations({ IS_INTERCOM_ENABLED: isIntercomEnabled ? "0" : "1" }); }; return ( <>
Chat with us
Let your users chat with us via Intercom or another service. Toggling Telemetry off turns this off automatically.
); });