gitscope
https://dev.kronoz.win/r/marzneshin.git
dashboard/src/features/nodes/dialogs/settings/use-nodes-settings.ts · v0.3.0-alpha11
Source
1 ff900b8 Mrdn 2y ago import { useState } from "react";
2 ff900b8 Mrdn 2y ago import { NodeType, useNodesSettingsMutation, useNodesSettingsQuery } from "../..";
3 ff900b8 Mrdn 2y ago
4 ff900b8 Mrdn 2y ago export const useNodesSettings = (entity: NodeType) => {
5 ff900b8 Mrdn 2y ago const { data } = useNodesSettingsQuery(entity);
6 ff900b8 Mrdn 2y ago const [config, setConfig] = useState<any>(data)
7 ff900b8 Mrdn 2y ago const [payloadValidity, setPayloadValidity] = useState<boolean>(true)
8 ff900b8 Mrdn 2y ago const mutate = useNodesSettingsMutation();
9 ff900b8 Mrdn 2y ago
10 ff900b8 Mrdn 2y ago const handleEditorValidation = (markers: any[]) => {
11 ff900b8 Mrdn 2y ago setPayloadValidity(!markers.length)
12 ff900b8 Mrdn 2y ago }
13 ff900b8 Mrdn 2y ago
14 ff900b8 Mrdn 2y ago const handleConfigSave = () => {
15 ff900b8 Mrdn 2y ago mutate.mutate({ node: entity, config })
16 ff900b8 Mrdn 2y ago }
17 ff900b8 Mrdn 2y ago
18 ff900b8 Mrdn 2y ago const handleConfigChange = (newConfig: string | undefined) => {
19 ff900b8 Mrdn 2y ago if (newConfig) {
20 ff900b8 Mrdn 2y ago try {
21 ff900b8 Mrdn 2y ago const parsedConfig = JSON.parse(newConfig);
22 ff900b8 Mrdn 2y ago setConfig(parsedConfig);
23 ff900b8 Mrdn 2y ago } catch (error) {
24 ff900b8 Mrdn 2y ago setPayloadValidity(false)
25 ff900b8 Mrdn 2y ago }
26 ff900b8 Mrdn 2y ago }
27 ff900b8 Mrdn 2y ago };
28 ff900b8 Mrdn 2y ago
29 ff900b8 Mrdn 2y ago return { payloadValidity, data, handleConfigSave, handleConfigChange, handleEditorValidation }
30 ff900b8 Mrdn 2y ago }