/** * Copyright (c) 2023-present Plane Software, Inc. and contributors * SPDX-License-Identifier: AGPL-3.0-only * See the LICENSE file for details. */ import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import { Switch } from "@makeplane/propel/components/switch"; // hooks import { useProjectEstimates } from "@/hooks/store/estimates"; import { useProject } from "@/hooks/store/use-project"; // i18n type TEstimateDisableSwitch = { workspaceSlug: string; projectId: string; isAdmin: boolean; }; export const EstimateDisableSwitch = observer(function EstimateDisableSwitch(props: TEstimateDisableSwitch) { const { workspaceSlug, projectId, isAdmin } = props; // i18n const { t } = useTranslation(); // hooks const { updateProject, currentProjectDetails } = useProject(); const { currentActiveEstimateId } = useProjectEstimates(); const currentProjectActiveEstimate = currentProjectDetails?.estimate || undefined; const disableEstimate = async () => { if (!workspaceSlug || !projectId) return; try { await updateProject(workspaceSlug, projectId, { estimate: currentProjectActiveEstimate ? null : currentActiveEstimateId, }); setToast({ type: TOAST_TYPE.SUCCESS, title: currentProjectActiveEstimate ? t("project_settings.estimates.toasts.disabled.success.title") : t("project_settings.estimates.toasts.enabled.success.title"), message: currentProjectActiveEstimate ? t("project_settings.estimates.toasts.disabled.success.message") : t("project_settings.estimates.toasts.enabled.success.message"), }); } catch (_err) { setToast({ type: TOAST_TYPE.ERROR, title: t("project_settings.estimates.toasts.disabled.error.title"), message: t("project_settings.estimates.toasts.disabled.error.message"), }); } }; return ( { void disableEstimate(); }} disabled={!isAdmin} aria-label="Toggle estimates" /> ); });