import React from 'react'; import { RiCheckLine, RiCloseLine, RiTimeLine } from '@remixicon/react'; import { cn } from '@/lib/utils'; import type { PermissionRequest as PermissionRequestPayload, PermissionResponse } from '@/types/permission'; import * as sessionActions from '@/sync/session-actions'; interface PermissionRequestProps { permission: PermissionRequestPayload; onResponse?: (response: 'once' | 'always' | 'reject') => void; } export const PermissionRequest: React.FC = ({ permission, onResponse }) => { const [isResponding, setIsResponding] = React.useState(false); const [hasResponded, setHasResponded] = React.useState(false); const respondToPermission = sessionActions.respondToPermission;; const handleResponse = async (response: PermissionResponse) => { setIsResponding(true); try { await respondToPermission(permission.sessionID, permission.id, response); setHasResponded(true); onResponse?.(response); } catch { /* ignored */ } finally { setIsResponding(false); } }; if (hasResponded) { return null; } const command = typeof permission.metadata.command === 'string' ? permission.metadata.command : (permission.patterns?.[0] ?? permission.permission); return (
Permission required: {command}
{isResponding && (
)}
); };