From cb7913ebb020a1fe510af5c443c6e642cc98c6b1 Mon Sep 17 00:00:00 2001 From: qixinbo Date: Mon, 30 Mar 2026 00:01:28 +0800 Subject: [PATCH] refactor: two rendering logics to one --- frontend/src/components/ChatInterface.tsx | 659 ++++++++-------------- 1 file changed, 239 insertions(+), 420 deletions(-) diff --git a/frontend/src/components/ChatInterface.tsx b/frontend/src/components/ChatInterface.tsx index 7338e90..f4c85ac 100644 --- a/frontend/src/components/ChatInterface.tsx +++ b/frontend/src/components/ChatInterface.tsx @@ -801,6 +801,231 @@ export function ChatInterface() { ); }; + const ChatInputPanel = ({ + menuSide, + menuOffsetClass, + recordingWaveKeyPrefix, + showDisclaimer = false, + }: { + menuSide: "top" | "bottom"; + menuOffsetClass: string; + recordingWaveKeyPrefix: string; + showDisclaimer?: boolean; + }) => { + return ( +
+
+ {renderFileCard()} + {renderActiveSelections()} +
+
+ + + + + +
+
+
+ + {t('knowledgeBase')} +
+
+ {availableKnowledgeBases.length > 0 ? ( + availableKnowledgeBases.map((kb) => ( + + )) + ) : ( +
+ +

{t('noKnowledgeBases')}

+
+ )} + {selectedKnowledgeBaseId ? ( +
+ +
+ ) : null} +
+
+ +
+
+ + {t('dataSource')} +
+
+ {availableDataSources.length > 0 ? ( + availableDataSources.map((ds) => ( + + )) + ) : ( +
+ +

{t('noDataSources')}

+
+ )} + {selectedDataSource ? ( +
+ +
+ ) : null} +
+
+
+
+
+
+ + {isRecording ? ( + <> +
+
+
+
+ {Array.from({ length: 30 }).map((_, idx) => { + const dynamic = Math.abs(Math.sin(Date.now() / 180 + idx * 0.85)); + const height = Math.max(4, Math.round((4 + dynamic * 18) * (0.45 + recordingLevel))); + return ( + + ); + })} +
+
+
+
+ + +
+ + ) : ( + <> + + setSlashQuery(null)} + /> + +
+ + +
+ + )} +
+
+ {showDisclaimer && ( +
+

+ {t('dataClawDisclaimer')} +

+
+ )} +
+ ); + }; + useEffect(() => { const fetchSkills = async () => { try { @@ -1156,218 +1381,14 @@ export function ChatInterface() {
{/* Input Area */} -
-
-
- {renderFileCard()} - {renderActiveSelections()} -
-
- - - - - -
- {/* Left Column: Knowledge Base */} -
-
-
- - {t('knowledgeBase')} -
-
- {availableKnowledgeBases.length > 0 ? ( - availableKnowledgeBases.map((kb) => ( - - )) - ) : ( -
- -

{t('noKnowledgeBases')}

-
- )} - {selectedKnowledgeBaseId ? ( -
- -
- ) : null} -
-
-
- - {/* Right Column: Data Source */} -
-
-
- - {t('dataSource')} -
-
- {availableDataSources.length > 0 ? ( - availableDataSources.map((ds) => ( - - )) - ) : ( -
- -

{t('noDataSources')}

-
- )} - {selectedDataSource && ( -
- -
- )} -
-
-
-
-
-
-
- - {isRecording ? ( - <> -
-
-
-
- {Array.from({ length: 30 }).map((_, idx) => { - const dynamic = Math.abs(Math.sin(Date.now() / 180 + idx * 0.85)); - const height = Math.max(4, Math.round((4 + dynamic * 18) * (0.45 + recordingLevel))); - return ( - - ); - })} -
-
-
-
- - -
- - ) : ( - <> - - setSlashQuery(null)} - /> - -
- - -
- - )} -
-
-
- {/* Common Questions or suggestions could go here */} -
+
+ +
+ {/* Common Questions or suggestions could go here */}
@@ -1615,214 +1636,12 @@ export function ChatInterface() { {/* Floating Input for Chat State */} {messages.length > 0 && (
-
-
- {renderFileCard()} - {renderActiveSelections()} -
-
- - - - - -
-
-
- - {t('knowledgeBase')} -
-
- {availableKnowledgeBases.length > 0 ? ( - availableKnowledgeBases.map((kb) => ( - - )) - ) : ( -
- -

{t('noKnowledgeBases')}

-
- )} - {selectedKnowledgeBaseId ? ( -
- -
- ) : null} -
-
- -
-
- - {t('dataSource')} -
-
- {availableDataSources.length > 0 ? ( - availableDataSources.map((ds) => ( - - )) - ) : ( -
- -

{t('noDataSources')}

-
- )} - {selectedDataSource ? ( -
- -
- ) : null} -
-
-
-
-
-
- - {isRecording ? ( - <> -
-
-
-
- {Array.from({ length: 30 }).map((_, idx) => { - const dynamic = Math.abs(Math.sin(Date.now() / 180 + idx * 0.85)); - const height = Math.max(4, Math.round((4 + dynamic * 18) * (0.45 + recordingLevel))); - return ( - - ); - })} -
-
-
-
- - -
- - ) : ( - <> - - setSlashQuery(null)} - /> - -
- - -
- - )} -
-
-
-

- {t('dataClawDisclaimer')} -

-
-
+
)} {