gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/modules/nodes/dialogs/settings/node-config-editor.tsx · master
Source
1 f5c168d Mardin 2y ago import Editor from "@monaco-editor/react";
2 ff900b8 Mrdn 2y ago import { useTheme } from "@marzneshin/features/theme-switch";
3 ff900b8 Mrdn 2y ago import { useNodesSettings } from "./use-nodes-settings";
4 7389ad0 Mardin 2y ago import { Button, Awaiting } from "@marzneshin/common/components";
5 f5c168d Mardin 2y ago import { useTranslation } from "react-i18next";
6 f5c168d Mardin 2y ago import type { NodeType } from "../..";
7 ff900b8 Mrdn 2y ago
8 f5c168d Mardin 2y ago export const NodeConfigEditor = ({
9 f5c168d Mardin 2y ago entity,
10 f5c168d Mardin 2y ago backend,
11 f5c168d Mardin 2y ago }: { entity: NodeType; backend: string }) => {
12 f5c168d Mardin 2y ago const { t } = useTranslation();
13 f5c168d Mardin 2y ago const { theme } = useTheme();
14 f5c168d Mardin 2y ago const {
15 f5c168d Mardin 2y ago payloadValidity,
16 f5c168d Mardin 2y ago language,
17 f5c168d Mardin 2y ago config,
18 6a5c50e Mardin 2y ago isFetching,
19 f5c168d Mardin 2y ago handleConfigSave,
20 f5c168d Mardin 2y ago handleConfigChange,
21 f5c168d Mardin 2y ago handleEditorValidation,
22 f5c168d Mardin 2y ago } = useNodesSettings(entity, backend);
23 ff900b8 Mrdn 2y ago
24 f5c168d Mardin 2y ago return (
25 f5c168d Mardin 2y ago <>
26 6a5c50e Mardin 2y ago <Awaiting
27 6a5c50e Mardin 2y ago isFetching={isFetching}
28 6a5c50e Mardin 2y ago Component={
29 6a5c50e Mardin 2y ago <Editor
30 6a5c50e Mardin 2y ago height="50vh"
31 6a5c50e Mardin 2y ago className="rounded-sm border"
32 6a5c50e Mardin 2y ago defaultLanguage={language}
33 6a5c50e Mardin 2y ago theme={theme === "dark" ? "vs-dark" : "github"}
34 6a5c50e Mardin 2y ago defaultValue={config}
35 6a5c50e Mardin 2y ago onChange={handleConfigChange}
36 6a5c50e Mardin 2y ago onValidate={handleEditorValidation}
37 6a5c50e Mardin 2y ago />
38 6a5c50e Mardin 2y ago }
39 f5c168d Mardin 2y ago />
40 f5c168d Mardin 2y ago <Button
41 f5c168d Mardin 2y ago className="w-full"
42 f5c168d Mardin 2y ago variant={!payloadValidity ? "destructive" : "default"}
43 f5c168d Mardin 2y ago onClick={handleConfigSave}
44 f5c168d Mardin 2y ago disabled={!payloadValidity}
45 f5c168d Mardin 2y ago >
46 f5c168d Mardin 2y ago {t("save")}
47 f5c168d Mardin 2y ago </Button>
48 ff900b8 Mrdn 2y ago </>
49 f5c168d Mardin 2y ago );
50 f5c168d Mardin 2y ago };