import {Button, Tooltip} from "antd"; import {useState} from "react"; import {useAppDispatch, useAppSelector} from "../../../../store"; import {NginxApis} from "../../../../api/nginx.ts"; import {Message} from "auto-antd"; import {QuestionCircleOutlined} from "@ant-design/icons"; import {createServerHost} from "../../utils/nginx.ts"; import {NginxActions} from "../../../../store/slice/nginx.ts"; import {INginxServer} from "../../../../models/nginx.ts"; type IProps = { onSubmitData: ()=>Promise upstream?: boolean } /** * 将server的配置同步到服务器 * @constructor */ export const SyncButton = ({ onSubmitData, upstream}: IProps) => { const [loading,setLoading] = useState(false) const nginx = useAppSelector(state => state.nginx.current); const dispatch = useAppDispatch() /** * 将配置文件同步到服务器 */ const onSyncServer = async () => { if (!nginx?.id){ return } const serverData = await onSubmitData(); if (!serverData){ return } setLoading(true); const postData = createServerHost(nginx,serverData) NginxApis.refreshServer(postData) .then(()=>{ Message.success("sync success!"); const updateData: Partial={ ...serverData, confData: postData.serverConf, } if (upstream){ dispatch(NginxActions.updateUpstream(updateData)) }else { dispatch(NginxActions.updateServer(updateData)) } }) .finally(()=>{ setLoading(false) }) } if (!nginx?.id){ return null } return ( <> ) }