import Box from "@mui/material/Box"; import Stack from "@mui/material/Stack"; import TextField from "@mui/material/TextField"; import { useI18n } from "../../hooks/I18n"; import { useSync } from "../../hooks/Sync"; import Alert from "@mui/material/Alert"; import Link from "@mui/material/Link"; import MenuItem from "@mui/material/MenuItem"; import { URL_KISS_WORKER, OPT_SYNCTYPE_ALL, OPT_SYNCTYPE_WORKER, OPT_SYNCTYPE_WEBDAV, } from "../../config"; import { useState } from "react"; import { syncSettingAndRules } from "../../libs/sync"; import Button from "@mui/material/Button"; import { useAlert } from "../../hooks/Alert"; import SyncIcon from "@mui/icons-material/Sync"; import CircularProgress from "@mui/material/CircularProgress"; import { useSetting } from "../../hooks/Setting"; export default function SyncSetting() { const i18n = useI18n(); const { sync, updateSync } = useSync(); const alert = useAlert(); const [loading, setLoading] = useState(false); const { reloadSetting } = useSetting(); const handleChange = async (e) => { e.preventDefault(); const { name, value } = e.target; await updateSync({ [name]: value, }); }; const handleSyncTest = async (e) => { e.preventDefault(); try { setLoading(true); await syncSettingAndRules(); await reloadSetting(); alert.success(i18n("sync_success")); } catch (err) { console.log("[sync all]", err); alert.error(i18n("sync_failed")); } finally { setLoading(false); } }; if (!sync) { return; } const { syncType = OPT_SYNCTYPE_WORKER, syncUrl = "", syncUser = "", syncKey = "", } = sync; return ( {i18n("sync_warn")} {OPT_SYNCTYPE_ALL.map((item) => ( {item} ))} {i18n("about_sync_api")} ) } /> {syncType === OPT_SYNCTYPE_WEBDAV && ( )} {loading && } ); }