Spaces:
Build error
Build error
File size: 3,822 Bytes
30c32c8 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
const BlockType = require('../../extension-support/block-type');
const ArgumentType = require('../../extension-support/argument-type');
const ProjectPermissionManager = require('../../util/project-permissions');
/**
* Class for Permission blocks
* @constructor
*/
class JgPermissionBlocks {
constructor(runtime) {
/**
* The runtime instantiating this block package.
* @type {Runtime}
*/
this.runtime = runtime;
}
/**
* @returns {object} metadata for this extension and its blocks.
*/
getInfo() {
return {
id: 'JgPermissionBlocks',
name: 'Permissions',
color1: '#00C4FF',
color2: '#0093FF',
blocks: [
{
blockType: BlockType.LABEL,
text: "This extension is deprecated."
},
// tw says deleting menu elements is unsafe
// blocks below this are hidden
{ hideFromPalette: true, opcode: 'requestPermission', text: 'request [PERMISSION] permission', disableMonitor: false, blockType: BlockType.BOOLEAN, arguments: { PERMISSION: { type: ArgumentType.STRING, menu: 'permissions', defaultValue: "javascript" } } },
{ hideFromPalette: true, opcode: 'requestPermission2', text: 'request [PERMISSION] permission', disableMonitor: false, blockType: BlockType.BOOLEAN, arguments: { PERMISSION: { type: ArgumentType.STRING, menu: 'permissions2' } } },
{ hideFromPalette: true, opcode: 'requestAllPermission', text: 'request all permissions', disableMonitor: false, blockType: BlockType.BOOLEAN },
{ hideFromPalette: true, opcode: 'requestSitePermission', text: 'request permission to show [URL]', disableMonitor: false, blockType: BlockType.BOOLEAN, arguments: { URL: { type: ArgumentType.STRING, defaultValue: "https://www.example.com" } } },
],
menus: {
// tw says deleting menu elements is unsafe
// menus below this are hidden
permissions: "fetchPermissionsList",
permissions2: "fetchPermissionsList2"
}
};
}
fetchPermissionsList() {
return Object.getOwnPropertyNames(ProjectPermissionManager.permissions).filter(name => typeof ProjectPermissionManager.permissions[name] === "boolean").map(permissionName => ({
text: permissionName,
value: permissionName
}));
}
fetchPermissionsList2() {
// tw says deleting menu elements is unsafe
return Object.getOwnPropertyNames(ProjectPermissionManager.permissions).filter(name => typeof ProjectPermissionManager.permissions[name] === "boolean").filter(name => name !== "javascript").map(permissionName => ({
text: permissionName,
value: permissionName
}));
}
requestPermission(args) {
const permission = args.PERMISSION;
if (ProjectPermissionManager.permissions[permission] == true) return true;
return ProjectPermissionManager.RequestPermission(permission);
}
requestPermission2(args) {
// tw says deleting menu elements is unsafe
const permission = args.PERMISSION;
if (ProjectPermissionManager.permissions[permission] == true) return true;
return ProjectPermissionManager.RequestPermission(permission);
}
requestAllPermission() {
return ProjectPermissionManager.RequestAllPermissions();
}
requestSitePermission(args) {
const site = args.URL;
if (ProjectPermissionManager.permissions.limitedWebsites[site] == true) return true;
return ProjectPermissionManager.RequestPermission("limitedWebsite", site);
}
}
module.exports = JgPermissionBlocks;
|