From 46e58bf019988f6be831880bf58df9295ca02190 Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Wed, 4 Feb 2026 22:10:45 +0100
Subject: [PATCH] billing integration into ai workflow
---
src/hooks/playground/useDashboardInputForm.ts | 11 ++++++++---
src/pages/workflows/PlaygroundPage.tsx | 7 +++----
2 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/src/hooks/playground/useDashboardInputForm.ts b/src/hooks/playground/useDashboardInputForm.ts
index 84517fa..8650fdf 100644
--- a/src/hooks/playground/useDashboardInputForm.ts
+++ b/src/hooks/playground/useDashboardInputForm.ts
@@ -30,6 +30,7 @@ export function useDashboardInputForm(instanceId: string) {
const [optimisticMessage, setOptimisticMessage] = useState(null);
const [selectedPromptId, setSelectedPromptId] = useState(null);
const [workflowMode, setWorkflowMode] = useState<'Dynamic' | 'Automation' | null>(null);
+ const [selectedProvider, setSelectedProvider] = useState(''); // AI provider selection
const { checkPermission, canView } = usePermissions();
const [playgroundUIPermission, setPlaygroundUIPermission] = useState(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
};
}
diff --git a/src/pages/workflows/PlaygroundPage.tsx b/src/pages/workflows/PlaygroundPage.tsx
index f85a71b..4cf2b8a 100644
--- a/src/pages/workflows/PlaygroundPage.tsx
+++ b/src/pages/workflows/PlaygroundPage.tsx
@@ -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('');
- // AI Provider selection state
- const [selectedProvider, setSelectedProvider] = useState('');
-
// Load prompts on mount
useEffect(() => {
refetchPrompts();
@@ -788,7 +787,7 @@ export const PlaygroundPage: React.FC = () => {