import React, { useEffect, useCallback } from 'react'; import SettingsModal from '../settings/SettingsModal'; import { useAppShell } from '../appShellContext'; import useApiTokens from '../settings/useApiTokens'; import useCapabilitySets from '../settings/useCapabilitySets'; import useCapabilities from '../settings/useCapabilities'; import { api } from './appState'; const SettingsRoute = ({ open = true, onClose }) => { const { token, notifyApiError, setStatusMessage, passkeys, passkeysSupported, passkeysLoading, registeringPasskey, revokingPasskeyId, refreshPasskeys, registerPasskey, revokePasskey, } = useAppShell(); const { tokens, loading: tokensLoading, creating: creatingToken, deletingId, regeneratingId, createdSecret, refresh: refreshTokens, create: createToken, revoke: revokeToken, regenerate: regenerateToken, dismissSecret, } = useApiTokens({ api, token, notifyApiError, setStatusMessage }); const { capabilitySets, capabilitySetsLoading, creatingCapabilitySet, savingCapabilitySetId, deletingCapabilitySetId, supportsCapabilitySetLabels, refreshCapabilitySets, createCapabilitySet, updateCapabilitySet, deleteCapabilitySet, } = useCapabilitySets({ api, token, notifyApiError, setStatusMessage }); const { capabilities, capabilitiesLoading, refreshCapabilities, } = useCapabilities({ api, notifyApiError, token }); useEffect(() => { refreshTokens(); refreshCapabilitySets(); refreshCapabilities(); refreshPasskeys(); }, [refreshTokens, refreshCapabilitySets, refreshCapabilities, refreshPasskeys]); const handleRefresh = useCallback(() => { refreshTokens(); refreshCapabilitySets(); refreshCapabilities(); }, [refreshTokens, refreshCapabilitySets, refreshCapabilities]); const handleClose = useCallback(() => { dismissSecret(); onClose?.(); }, [dismissSecret, onClose]); useEffect(() => () => { dismissSecret(); }, [dismissSecret]); if (!open) { return null; } return ( ); }; export default SettingsRoute;