"use client"; import React from "react"; import Link from "next/link"; import { observer } from "mobx-react-lite"; // hooks import { useInstance } from "@/hooks"; // ui import { ToggleSwitch, getButtonStyling } from "@plane/ui"; // icons import { Settings2 } from "lucide-react"; // types import { TInstanceAuthenticationMethodKeys } from "@plane/types"; // helpers import { cn } from "helpers/common.helper"; type Props = { disabled: boolean; updateConfig: (key: TInstanceAuthenticationMethodKeys, value: string) => void; }; export const GithubConfiguration: React.FC<Props> = observer((props) => { const { disabled, updateConfig } = props; // store const { formattedConfig } = useInstance(); // derived values const enableGithubConfig = formattedConfig?.IS_GITHUB_ENABLED ?? ""; const isGithubConfigured = !!formattedConfig?.GITHUB_CLIENT_ID && !!formattedConfig?.GITHUB_CLIENT_SECRET; return ( <> {isGithubConfigured ? ( <div className="flex items-center gap-4"> <Link href="/authentication/github" className={cn(getButtonStyling("link-primary", "md"), "font-medium")}> Edit </Link> <ToggleSwitch value={Boolean(parseInt(enableGithubConfig))} onChange={() => { Boolean(parseInt(enableGithubConfig)) === true ? updateConfig("IS_GITHUB_ENABLED", "0") : updateConfig("IS_GITHUB_ENABLED", "1"); }} size="sm" disabled={disabled} /> </div> ) : ( <Link href="/authentication/github" className={cn(getButtonStyling("neutral-primary", "sm"), "text-custom-text-300")} > <Settings2 className="h-4 w-4 p-0.5 text-custom-text-300/80" /> Configure </Link> )} </> ); });