import React from 'react'; import { hasPermission } from '../../../server/lib/permissions'; import { Permission, User } from '../../hooks/useUser'; export interface PermissionItem { id: string; name: string; description: string; permission: Permission; children?: PermissionItem[]; } interface PermissionOptionProps { option: PermissionItem; currentPermission: number; user?: User; parent?: PermissionItem; onUpdate: (newPermissions: number) => void; } const PermissionOption: React.FC = ({ option, currentPermission, onUpdate, user, parent, }) => { const autoApprovePermissions = [ Permission.AUTO_APPROVE, Permission.AUTO_APPROVE_MOVIE, Permission.AUTO_APPROVE_TV, Permission.AUTO_APPROVE_4K, Permission.AUTO_APPROVE_4K_MOVIE, Permission.AUTO_APPROVE_4K_TV, ]; return ( <>
{ onUpdate( hasPermission(option.permission, currentPermission) ? currentPermission - option.permission : currentPermission + option.permission ); }} checked={ hasPermission(option.permission, currentPermission) || (!!parent?.permission && hasPermission(parent.permission, currentPermission)) || (autoApprovePermissions.includes(option.permission) && hasPermission(Permission.MANAGE_REQUESTS, currentPermission)) } />
{(option.children ?? []).map((child) => (
onUpdate(newPermission)} parent={option} />
))} ); }; export default PermissionOption;