58 lines
1.9 KiB
TypeScript
58 lines
1.9 KiB
TypeScript
/**
|
||
* 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 Link from "next/link";
|
||
// icons
|
||
import { Settings2 } from "lucide-react";
|
||
// plane internal packages
|
||
import { getButtonStyling } from "@plane/propel/button";
|
||
import type { TInstanceAuthenticationMethodKeys } from "@plane/types";
|
||
import { ToggleSwitch } from "@plane/ui";
|
||
import { cn } from "@plane/utils";
|
||
// hooks
|
||
import { useInstance } from "@/hooks/store";
|
||
|
||
type Props = {
|
||
disabled: boolean;
|
||
updateConfig: (key: TInstanceAuthenticationMethodKeys, value: string) => void;
|
||
};
|
||
|
||
export const GitlabConfiguration = observer(function GitlabConfiguration(props: Props) {
|
||
const { disabled, updateConfig } = props;
|
||
// store
|
||
const { formattedConfig } = useInstance();
|
||
// derived values
|
||
const enableGitlabConfig = formattedConfig?.IS_GITLAB_ENABLED ?? "";
|
||
const isGitlabConfigured = !!formattedConfig?.GITLAB_CLIENT_ID && !!formattedConfig?.GITLAB_CLIENT_SECRET;
|
||
|
||
return (
|
||
<>
|
||
{isGitlabConfigured ? (
|
||
<div className="flex items-center gap-4">
|
||
<Link href="/authentication/gitlab" className={cn(getButtonStyling("link", "base"), "font-medium")}>
|
||
Изменить
|
||
</Link>
|
||
<ToggleSwitch
|
||
value={Boolean(parseInt(enableGitlabConfig))}
|
||
onChange={() => {
|
||
const newEnableGitlabConfig = Boolean(parseInt(enableGitlabConfig)) === true ? "0" : "1";
|
||
updateConfig("IS_GITLAB_ENABLED", newEnableGitlabConfig);
|
||
}}
|
||
size="sm"
|
||
disabled={disabled}
|
||
/>
|
||
</div>
|
||
) : (
|
||
<Link href="/authentication/gitlab" className={cn(getButtonStyling("secondary", "base"), "text-tertiary")}>
|
||
<Settings2 className="h-4 w-4 p-0.5 text-tertiary" />
|
||
Настроить
|
||
</Link>
|
||
)}
|
||
</>
|
||
);
|
||
});
|