react-permissions-dynamic
Version:
This is a package with react-permissions
120 lines (119 loc) • 7.84 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const react_1 = __importDefault(require("react"));
const src_1 = require("../../src");
const initialPermissions = [
{
action: 'has_this_permission',
allowed: true,
},
{
action: 'not_available_permission',
allowed: false,
},
{
action: 'no_allowed_specified_permission',
},
];
const emptyCheckPermissions = () => __awaiter(void 0, void 0, void 0, function* () {
yield new Promise(resolve => setTimeout(resolve, 2000));
return [
{
action: 'checked_on_go',
allowed: true,
},
{
action: 'denied_on_go',
allowed: false,
},
{
action: 'no_allowed_info_on_go',
},
];
});
const SuccessfullResult = () => {
return react_1.default.createElement("span", { style: { color: 'lightgreen' } }, "\u2714");
};
const FailedResult = () => {
return react_1.default.createElement("span", { style: { color: 'red' } }, "\u274C");
};
const Permissions = () => {
return (react_1.default.createElement(react_1.default.Fragment, null,
react_1.default.createElement(src_1.PermissionsProvider, { initialPermissions: initialPermissions, onCheckPermissions: emptyCheckPermissions },
react_1.default.createElement("h1", null, "Permissions Playground"),
react_1.default.createElement(src_1.PermissionCheck, { fallback: react_1.default.createElement(FailedResult, null), action: "has_this_permission" },
react_1.default.createElement("span", null,
"This is permitted ",
react_1.default.createElement(SuccessfullResult, null))),
react_1.default.createElement(src_1.PermissionCheck, { action: "not_available_permission" },
"This is not permitted, but we see nothing ",
react_1.default.createElement(FailedResult, null)),
react_1.default.createElement(src_1.PermissionCheck, { fallback: react_1.default.createElement("span", null,
"No Permission ",
react_1.default.createElement(SuccessfullResult, null)), action: "not_available_permission" },
react_1.default.createElement("span", null,
"This is not permitted, but we have fallback ",
react_1.default.createElement(FailedResult, null))),
react_1.default.createElement(src_1.PermissionCheck, { action: "didnt check this action", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null,
"Server forgot about this permission ",
react_1.default.createElement(SuccessfullResult, null)) },
"We didn't get permission from check ",
react_1.default.createElement(FailedResult, null)),
react_1.default.createElement(src_1.PermissionCheck, { action: "denied_on_go", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null,
"Server denied this permission ",
react_1.default.createElement(SuccessfullResult, null)) },
"We got refected permission from check ",
react_1.default.createElement(FailedResult, null)),
react_1.default.createElement(src_1.PermissionCheck, { action: "no_allowed_info_on_go", loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null,
"Server didn't send allowed check ",
react_1.default.createElement(SuccessfullResult, null)) },
"We didn't get allowed permission from check ",
react_1.default.createElement(FailedResult, null)),
react_1.default.createElement(src_1.PermissionCheck, { loading: react_1.default.createElement("span", null, "This is loading for 2s"), action: "checked_on_go", fallback: react_1.default.createElement("span", null,
"Permission check failed ",
react_1.default.createElement(FailedResult, null)) },
react_1.default.createElement("span", null,
"This content loaded ",
react_1.default.createElement(SuccessfullResult, null))),
react_1.default.createElement(src_1.PermissionCheck, { action: ['checked_on_go'], loading: react_1.default.createElement("span", null, "This is loading for 2s"), fallback: react_1.default.createElement("span", null,
"Permission check failed ",
react_1.default.createElement(FailedResult, null)) },
react_1.default.createElement("span", null,
"Action was passed as array ",
react_1.default.createElement(SuccessfullResult, null))),
react_1.default.createElement(src_1.PermissionCheck, { action: ['checked_on_go', 'not_available_permission'], loading: react_1.default.createElement("span", null, "This is loading for 2s"), isAllowed: allowed => allowed.includes('checked_on_go') ||
allowed.includes('not_available_permission'), fallback: react_1.default.createElement("span", null,
"This message should not appear ",
react_1.default.createElement(FailedResult, null)) },
react_1.default.createElement("span", null,
"Must handle custom logic ",
react_1.default.createElement(SuccessfullResult, null))),
react_1.default.createElement(src_1.PermissionCheck, { action: "checked_on_go", fallback: react_1.default.createElement("span", null,
"This message should not appear ",
react_1.default.createElement(FailedResult, null)) },
react_1.default.createElement("span", null,
"No Loading content must be shown ",
react_1.default.createElement(SuccessfullResult, null)))),
react_1.default.createElement(src_1.PermissionsProvider, { initialPermissions: initialPermissions },
react_1.default.createElement(src_1.PermissionCheck, { action: "this_permission_is_unknown", loading: react_1.default.createElement("span", null,
"This message should not appear ",
react_1.default.createElement(FailedResult, null)), fallback: react_1.default.createElement("span", null,
"This message should appear ",
react_1.default.createElement(SuccessfullResult, null)) },
react_1.default.createElement("span", null,
"No dynamic check means static permissions ",
react_1.default.createElement(SuccessfullResult, null))))));
};
exports.default = react_1.default.memo(Permissions);