UNPKG

@opendash/plugin-parse

Version:

Parse Server Plugin for open.DASH

59 lines 3.15 kB
import React, { useState, useEffect } from "react"; import { List, Modal, Switch, Input, Divider, message } from "antd"; import { Parse, useParseQuery, useParseGet } from "parse-hooks"; import { useTranslation, useObjectState } from "opendash"; var roleQuery = new Parse.Query(Parse.Role).limit(1000); export default function AdminTableEditPermission(_a) { var className = _a.className, id = _a.id, close = _a.close; var t = useTranslation(["parse", "opendash"])[0]; var _b = useState(""), searchString = _b[0], setSearchString = _b[1]; var _c = useObjectState({}), state = _c[0], setState = _c[1], resetState = _c[2]; var _d = useParseQuery(roleQuery), roles = _d.result, roleError = _d.roleError, reload = _d.reload; var _e = useParseGet(className, id), object = _e.result, objectError = _e.objectError; useEffect(function () { resetState(); if (object && roles) { setState(Object.fromEntries(roles.map(function (role) { return [ role.get("name"), object.getACL().getRoleReadAccess(role), ]; }))); } }, [object, roles]); useEffect(function () { if (className && id) { reload(); } }, [className, id]); var onSave = function (e) { Object.entries(state).forEach(function (_a) { var role = _a[0], value = _a[1]; object.getACL().setRoleReadAccess(role, value); object.getACL().setRoleWriteAccess(role, value); }); object.save().then(function (ok) { message.success(t("parse:admin.edit_permission_success")); close(); }, function (error) { message.error(t("parse:admin.edit_permission_error")); console.error(error); close(); }); }; var list = Object.entries(state) .map(function (_a) { var key = _a[0], value = _a[1]; return ({ key: key, value: value }); }) .filter(function (r) { return r.key.toLowerCase().includes(searchString.toLowerCase()); }); var onCheck = function (key) { return function (value) { var _a; setState((_a = {}, _a[key] = value, _a)); }; }; return (React.createElement(Modal, { visible: !!id, title: t("parse:admin.edit_role_permission"), onCancel: function (e) { return close(); }, onOk: onSave, okText: t("parse:admin.edit_permission_save") }, React.createElement(Input.Search, { value: searchString, onChange: function (e) { return setSearchString(e.target.value); }, placeholder: t("parse:admin.edit_permission_filter") }), React.createElement(Divider, null), React.createElement(List, { className: "demo-loadmore-list", loading: !roles || !object, itemLayout: "horizontal", dataSource: list, renderItem: function (item) { return (React.createElement(List.Item, { actions: [ React.createElement(Switch, { size: "small", checked: item.value, onChange: onCheck(item.key) }), ] }, item.key)); } }))); } //# sourceMappingURL=AdminTableEditPermission.js.map