billing integration into ai workflow

This commit is contained in:
ValueOn AG 2026-02-04 22:10:45 +01:00
parent 919f6e4b7d
commit 46e58bf019
2 changed files with 11 additions and 7 deletions

View file

@ -30,6 +30,7 @@ export function useDashboardInputForm(instanceId: string) {
const [optimisticMessage, setOptimisticMessage] = useState<WorkflowMessage | null>(null);
const [selectedPromptId, setSelectedPromptId] = useState<string | null>(null);
const [workflowMode, setWorkflowMode] = useState<'Dynamic' | 'Automation' | null>(null);
const [selectedProvider, setSelectedProvider] = useState<string>(''); // AI provider selection
const { checkPermission, canView } = usePermissions();
const [playgroundUIPermission, setPlaygroundUIPermission] = useState<boolean>(false);
@ -594,7 +595,8 @@ export function useDashboardInputForm(instanceId: string) {
const requestBody = {
prompt: trimmedInput,
listFileId: fileIdsToSend.length > 0 ? fileIdsToSend : undefined,
userLanguage: 'en'
userLanguage: 'en',
preferredProvider: selectedProvider || undefined // AI provider selection
};
const result = await startWorkflow(requestBody, workflowOptions);
@ -636,7 +638,7 @@ export function useDashboardInputForm(instanceId: string) {
setWorkflowStatusOptimistic('idle');
}
}
}, [inputValue, pendingFiles, isRunning, workflowId, startingWorkflow, startWorkflow, stopWorkflow, resetWorkflow, refetchWorkflows, selectWorkflowFromContext, selectWorkflow, chatWorkflowPermission, workflowMode, setWorkflowStatusOptimistic]);
}, [inputValue, pendingFiles, isRunning, workflowId, startingWorkflow, startWorkflow, stopWorkflow, resetWorkflow, refetchWorkflows, selectWorkflowFromContext, selectWorkflow, chatWorkflowPermission, workflowMode, selectedProvider, setWorkflowStatusOptimistic]);
useEffect(() => {
const handleWorkflowCleared = () => {
@ -820,7 +822,10 @@ export function useDashboardInputForm(instanceId: string) {
allUserFiles: fileContext.files || [],
handleFileAttach,
handleFileUploadAndAttach,
latestStats
latestStats,
// AI Provider selection
selectedProvider,
onProviderSelect: setSelectedProvider
};
}

View file

@ -58,6 +58,8 @@ export const PlaygroundPage: React.FC = () => {
deletingFiles,
previewingFiles,
downloadingFiles,
selectedProvider,
onProviderSelect,
} = hookData;
const { prompts, refetch: refetchPrompts } = usePrompts();
@ -93,9 +95,6 @@ export const PlaygroundPage: React.FC = () => {
// Prompts dropdown state
const [selectedPromptId, setSelectedPromptId] = useState<string>('');
// AI Provider selection state
const [selectedProvider, setSelectedProvider] = useState<string>('');
// Load prompts on mount
useEffect(() => {
refetchPrompts();
@ -788,7 +787,7 @@ export const PlaygroundPage: React.FC = () => {
</button>
<ProviderSelect
value={selectedProvider}
onChange={setSelectedProvider}
onChange={onProviderSelect}
showLabel={false}
/>
<VoiceLanguageSelect