Files
tolaria/src/hooks/useAppCommandAiActions.ts
2026-05-12 22:30:24 +02:00

66 lines
2.0 KiB
TypeScript

import { useMemo } from 'react'
import type { AiAgentId, AiAgentsStatus } from '../lib/aiAgents'
import type { VaultAiGuidanceStatus } from '../lib/vaultAiGuidance'
interface AppCommandDialogs {
toggleAIChat: () => void
openSettings: () => void
}
interface AppCommandAiPreferences {
defaultAiAgent: AiAgentId
setDefaultAiAgent: (agent: AiAgentId) => void
cycleDefaultAiAgent: () => void
defaultAiAgentLabel: string
}
interface AppCommandAiActions {
aiFeaturesEnabled: boolean
onToggleAIChat?: () => void
onOpenAiAgents?: () => void
aiAgentsStatus?: AiAgentsStatus
vaultAiGuidanceStatus?: VaultAiGuidanceStatus
onRestoreVaultAiGuidance?: () => void
selectedAiAgent?: AiAgentId
onSetDefaultAiAgent?: (agent: AiAgentId) => void
onCycleDefaultAiAgent?: () => void
selectedAiAgentLabel?: string
}
export function useAppCommandAiActions(
aiFeaturesEnabled: boolean,
dialogs: AppCommandDialogs,
aiAgentsStatus: AiAgentsStatus,
vaultAiGuidanceStatus: VaultAiGuidanceStatus,
restoreVaultAiGuidanceCommand: (() => void) | undefined,
aiAgentPreferences: AppCommandAiPreferences,
): AppCommandAiActions {
return useMemo(() => {
if (!aiFeaturesEnabled) return { aiFeaturesEnabled: false }
return {
aiFeaturesEnabled: true,
onToggleAIChat: dialogs.toggleAIChat,
onOpenAiAgents: dialogs.openSettings,
aiAgentsStatus,
vaultAiGuidanceStatus,
onRestoreVaultAiGuidance: restoreVaultAiGuidanceCommand,
selectedAiAgent: aiAgentPreferences.defaultAiAgent,
onSetDefaultAiAgent: aiAgentPreferences.setDefaultAiAgent,
onCycleDefaultAiAgent: aiAgentPreferences.cycleDefaultAiAgent,
selectedAiAgentLabel: aiAgentPreferences.defaultAiAgentLabel,
}
}, [
aiFeaturesEnabled,
dialogs.toggleAIChat,
dialogs.openSettings,
aiAgentsStatus,
vaultAiGuidanceStatus,
restoreVaultAiGuidanceCommand,
aiAgentPreferences.defaultAiAgent,
aiAgentPreferences.setDefaultAiAgent,
aiAgentPreferences.cycleDefaultAiAgent,
aiAgentPreferences.defaultAiAgentLabel,
])
}