diff --git a/public/locales/en-US/application.json b/public/locales/en-US/application.json index 8f02ec5..41ff450 100644 --- a/public/locales/en-US/application.json +++ b/public/locales/en-US/application.json @@ -447,6 +447,9 @@ "rootFolder": "Relative root folder", "createdAt": "Created at", "action": "Action", + "readonlyOn": "Turn on readonly", + "readonlyOff": "Turn off readonly", + "delete": "Delete", "listEmpty": "No records.", "createNewAccount": "Create new account", "taskType": "Task type", diff --git a/public/locales/zh-CN/application.json b/public/locales/zh-CN/application.json index 72f2f09..defc7f0 100644 --- a/public/locales/zh-CN/application.json +++ b/public/locales/zh-CN/application.json @@ -446,6 +446,9 @@ "rootFolder": "相对根目录", "createdAt": "创建日期", "action": "操作", + "readonlyOn": "开启只读", + "readonlyOff": "关闭只读", + "delete": "删除", "listEmpty": "没有记录", "createNewAccount": "创建新账号", "taskType": "任务类型", diff --git a/src/component/Setting/WebDAV.js b/src/component/Setting/WebDAV.js index 93a8b56..10c9ccf 100644 --- a/src/component/Setting/WebDAV.js +++ b/src/component/Setting/WebDAV.js @@ -15,7 +15,7 @@ import Alert from "@material-ui/lab/Alert"; import Auth from "../../middleware/Auth"; import API from "../../middleware/Api"; import IconButton from "@material-ui/core/IconButton"; -import { Delete } from "@material-ui/icons"; +import { Delete, ToggleOff, ToggleOn } from "@material-ui/icons"; import CreateWebDAVAccount from "../Modals/CreateWebDAVAccount"; import TimeAgo from "timeago-react"; import Link from "@material-ui/core/Link"; @@ -23,6 +23,8 @@ import { toggleSnackbar } from "../../redux/explorer"; import Nothing from "../Placeholder/Nothing"; import { useTranslation } from "react-i18next"; import AppPromotion from "./AppPromotion"; +import Tooltip from "@material-ui/core/Tooltip"; +import ToggleIcon from "material-ui-toggle-icon"; const useStyles = makeStyles((theme) => ({ layout: { @@ -111,6 +113,20 @@ export default function WebDAV() { }); }; + const toggleAccountReadonly = (id) => { + const account = accounts[id]; + API.patch("/webdav/accounts", { + id: account.ID, + readonly: !account.Readonly, + }).then((response) => { + account.Readonly = response.data.readonly; + const accountCopy = [...accounts]; + setAccounts(accountCopy); + }).catch((error) => { + ToggleSnackbar("top", "right", error.message, "error"); + }); + }; + const addAccount = (account) => { setCreate(false); API.post("/webdav/accounts", { @@ -125,6 +141,7 @@ export default function WebDAV() { CreatedAt: response.data.created_at, Name: account.name, Root: account.path, + Readonly: account.Readonly, }, ...accounts, ]); @@ -186,7 +203,7 @@ export default function WebDAV() { {t("setting.createdAt")} - + {t("setting.action")} @@ -230,15 +247,46 @@ export default function WebDAV() { )} /> - - + + toggleAccountReadonly(id) + }> + + + } + offIcon={ + + } + /> + + + deleteAccount(id) } > - - + + + + ))}