diff --git a/web/src/components/OperationSetting.js b/web/src/components/OperationSetting.js index 829e981..3da0dcc 100644 --- a/web/src/components/OperationSetting.js +++ b/web/src/components/OperationSetting.js @@ -1,8 +1,10 @@ import React, { useEffect, useState } from 'react'; import { Divider, Form, Grid, Header } from 'semantic-ui-react'; import { Card } from '@douyinfe/semi-ui'; -import GeneralSettings from '../pages/Setting/Operation/GeneralSettings.js'; -import DrawingSettings from '../pages/Setting/Operation/DrawingSettings.js'; +import SettingsGeneral from '../pages/Setting/Operation/SettingsGeneral.js'; +import SettingsDrawing from '../pages/Setting/Operation/SettingsDrawing.js'; +import SettingsSensitiveWords from '../pages/Setting/Operation/SettingsSensitiveWords.js'; + import { API, showError, @@ -238,40 +240,19 @@ const OperationSetting = () => { <> {/* 通用设置 */} - + {/* 绘图设置 */} - + + + {/* 屏蔽词过滤设置 */} + +
-
- 屏蔽词过滤设置 -
- - - - - - {/**/} - {/**/} {/* { {/* placeholder="例如:10"*/} {/* />*/} {/**/} - - - - { - submitConfig('words').then(); - }} - > - 保存屏蔽词设置 - - +
日志设置
diff --git a/web/src/pages/Setting/Operation/DrawingSettings.js b/web/src/pages/Setting/Operation/SettingsDrawing.js similarity index 99% rename from web/src/pages/Setting/Operation/DrawingSettings.js rename to web/src/pages/Setting/Operation/SettingsDrawing.js index 46187f0..4815d2f 100644 --- a/web/src/pages/Setting/Operation/DrawingSettings.js +++ b/web/src/pages/Setting/Operation/SettingsDrawing.js @@ -8,7 +8,7 @@ import { showWarning, } from '../../../helpers'; -export default function GeneralSettings(props) { +export default function SettingsDrawing(props) { const [loading, setLoading] = useState(false); const [inputs, setInputs] = useState({ DrawingEnabled: false, diff --git a/web/src/pages/Setting/Operation/GeneralSettings.js b/web/src/pages/Setting/Operation/SettingsGeneral.js similarity index 100% rename from web/src/pages/Setting/Operation/GeneralSettings.js rename to web/src/pages/Setting/Operation/SettingsGeneral.js diff --git a/web/src/pages/Setting/Operation/SettingsSensitiveWords.js b/web/src/pages/Setting/Operation/SettingsSensitiveWords.js new file mode 100644 index 0000000..3a2a4cd --- /dev/null +++ b/web/src/pages/Setting/Operation/SettingsSensitiveWords.js @@ -0,0 +1,139 @@ +import React, { useEffect, useState, useRef } from 'react'; +import { Button, Col, Form, Row, Spin, Tag } from '@douyinfe/semi-ui'; +import { + compareObjects, + API, + showError, + showSuccess, + showWarning, +} from '../../../helpers'; + +export default function SettingsSensitiveWords(props) { + const [loading, setLoading] = useState(false); + const [inputs, setInputs] = useState({ + CheckSensitiveEnabled: false, + CheckSensitiveOnPromptEnabled: false, + SensitiveWords: '', + }); + const refForm = useRef(); + const [inputsRow, setInputsRow] = useState(inputs); + + function onSubmit() { + const updateArray = compareObjects(inputs, inputsRow); + if (!updateArray.length) return showWarning('你似乎并没有修改什么'); + const requestQueue = updateArray.map((item) => { + let value = ''; + if (typeof inputs[item.key] === 'boolean') { + value = String(inputs[item.key]); + } else { + value = inputs[item.key]; + } + return API.put('/api/option/', { + key: item.key, + value, + }); + }); + setLoading(true); + Promise.all(requestQueue) + .then((res) => { + if (requestQueue.length === 1) { + if (res.includes(undefined)) return; + } else if (requestQueue.length > 1) { + if (res.includes(undefined)) return showError('部分更新失败'); + } + showSuccess('更新成功'); + }) + .catch(() => { + showError('更新失败'); + }) + .finally(() => { + setLoading(false); + setInputsRow(structuredClone(inputs)); + }); + } + + useEffect(() => { + const currentInputs = {}; + for (let key in props.options) { + if (Object.keys(inputs).includes(key)) { + currentInputs[key] = props.options[key]; + } + } + setInputs(currentInputs); + setInputsRow(structuredClone(currentInputs)); + refForm.current.setValues(currentInputs); + }, [props.options]); + return ( + <> + + (refForm.current = formAPI)} + style={{ marginBottom: 15 }} + > + + + + { + setInputs({ + ...inputs, + CheckSensitiveEnabled: value, + }); + }} + /> + + + + setInputs({ + ...inputs, + CheckSensitiveOnPromptEnabled: value, + }) + } + /> + + + + + + setInputs({ + ...inputs, + SensitiveWords: value, + }) + } + style={{ fontFamily: 'JetBrains Mono, Consolas' }} + autosize={{ minRows: 6, maxRows: 12 }} + /> + + + + + + + + + + ); +}