@opendash/plugin-parse
Version:
Parse Server Plugin for open.DASH
59 lines • 3.15 kB
JavaScript
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