diff --git a/libs/remix-ui/plugin-manager/src/lib/components/permissions/permissionsSettings.tsx b/libs/remix-ui/plugin-manager/src/lib/components/permissions/permissionsSettings.tsx index c75026604d..c5e6fde419 100644 --- a/libs/remix-ui/plugin-manager/src/lib/components/permissions/permissionsSettings.tsx +++ b/libs/remix-ui/plugin-manager/src/lib/components/permissions/permissionsSettings.tsx @@ -1,14 +1,22 @@ -import React, { Fragment, useState } from 'react' -import { PluginManagerSettings } from '../../../types' +import React, { Fragment, useCallback, useEffect, useState } from 'react' +import { PluginManagerSettings, PluginPermissions } from '../../../types' import { ModalDialog } from '@remix-ui/modal-dialog' +import { RemixUiCheckbox } from '@remix-ui/checkbox' +import { useLocalStorage } from '../../useLocalStorage' +import { type } from 'os' interface PermissionSettingsProps { pluginSettings: PluginManagerSettings - toPlugin?: string - funcObj?: {} - methodName?: string - fromPlugins?: {} +} +type DisplayPermissions = { + controlPluginName: { + controlPluginAction: { + pluginName: { + allow: boolean + } + } + } } function PermisssionsSettings ({ pluginSettings }: PermissionSettingsProps) { @@ -16,11 +24,84 @@ function PermisssionsSettings ({ pluginSettings }: PermissionSettingsProps) { * Declare component local state */ const [modalVisibility, setModalVisibility] = useState(true) - const toPluginP = '' - const fromName = '' - const methodName = '' + const [permissions, setPermissions] = useState( + JSON.parse(localStorage.getItem('plugins/permissions') || '{}')) + const [showPermissions, setShowPermissions] = useState([]) + const [akwaiPermission, setAkwaiPermission] = useState(false) const closeModal = () => setModalVisibility(true) + const displayPermissions = useCallback(() => { + if (permissions && Object.length > 0) { + setAkwaiPermission(true) + } + }, [permissions]) + const getTopLevelPluginNames = useCallback(() => { + return Object.keys(permissions).map(pluginName => { + return pluginName + }) + }, [permissions]) + + const getInnerPluginPermissionDetails = useCallback(() => { + const showPermissionsCopy = showPermissions + getTopLevelPluginNames().forEach(topLevelName => { + Object.keys(permissions[topLevelName]).forEach(functionName => { + Object.keys(permissions[topLevelName][functionName]).forEach(pluginName => { + showPermissionsCopy.push(permissions[topLevelName][functionName][pluginName]) + setShowPermissions(showPermissionsCopy) + }) + }) + }) + }, [getTopLevelPluginNames, permissions, showPermissions]) + + useEffect(() => { + getInnerPluginPermissionDetails() + displayPermissions() + }, [displayPermissions, getInnerPluginPermissionDetails, permissions, showPermissions]) + console.log('fetched permissions', permissions) + + function ShowPluginHeading ({ headingName }) { + return ( +
+

{headingName} permissions:

+ pluginSettings.clearAllPersmission('topLevelPluginNameP')} + className="far fa-trash-alt" + data-id={`pluginManagerSettingsClearAllPermission-${headingName}`}> + + +
+ ) + } + + function ShowCheckBox ({ allow, pluginName, functionName, topLevelPluginName }: { + allow: boolean, + pluginName: string, + functionName: string, + topLevelPluginName: string + }) { + return ( +
+
+ + {}} + checked={allow} + id={`permission-checkbox-${topLevelPluginName}-${functionName}-${pluginName}`} + aria-describedby={`module ${pluginName} asks permission for ${functionName}`} + /> + + +
+
+ ) + } + return ( -
-
-

toPlugin permissions:

- pluginSettings.clearAllPersmission(toPluginP)} className="far fa-trash-alt" data-id={`pluginManagerSettingsClearAllPermission-${toPluginP}`}> + {akwaiPermission ? (

Current Permission Settings

) : (

No Permission requested yet.

)} +
+
+ { + Object.keys(permissions).map(toplevelName => ( + + )) + } + { + Object.keys(permissions).forEach(topName => { + Object.keys(permissions[topName]).map(funcName => { + return Object.keys(permissions[topName][funcName]).map(pluginName => ( + + )) + }) + }) + }
- -

No Permission requested yet.

-
-
- {/* { ShowPermissionsByMethod(pluginSettings.permissions).map(fromPluginPermissions => { - - }) } */} - -
- pluginSettings.clearPersmission(fromName, toPluginP, methodName)} className="fa fa-trash-alt" data-id={`pluginManagerSettingsRemovePermission-${toPluginP}-${methodName}-${toPluginP}`}> -
-
-
+