@@ -9,7 +9,7 @@ import { useCredentials } from '../../context/UserCredentials';
99
1010export default function ChatModeToggle ( {
1111 menuAnchor,
12- closeHandler = ( ) => { } ,
12+ closeHandler = ( ) => { } ,
1313 open,
1414 anchorPortal = true ,
1515 disableBackdrop = false ,
@@ -20,45 +20,25 @@ export default function ChatModeToggle({
2020 anchorPortal ?: boolean ;
2121 disableBackdrop ?: boolean ;
2222} ) {
23- const { setchatModes, chatModes, postProcessingTasks, selectedRows } = useFileContext ( ) ;
23+ const { setchatModes, chatModes, postProcessingTasks } = useFileContext ( ) ;
2424 const isCommunityAllowed = postProcessingTasks . includes ( 'enable_communities' ) ;
2525 const { isGdsActive } = useCredentials ( ) ;
26-
2726 useEffect ( ( ) => {
28- // If rows are selected, the mode is valid (either vector or graph+vector)
29- if ( selectedRows . length > 0 ) {
30- if (
31- chatModes . includes ( chatModeLables . graph ) ||
32- chatModes . includes ( chatModeLables . fulltext ) ||
33- chatModes . includes ( chatModeLables [ 'global search+vector+fulltext' ] )
34- ) {
35- setchatModes ( ( prev ) =>
36- prev . filter (
37- ( m ) => ! [ chatModeLables . graph , chatModeLables . fulltext , chatModeLables [ 'graph+vector+fulltext' ] ] . includes ( m )
38- )
39- ) ;
40- }
41- if ( ! chatModes . includes ( chatModeLables . vector ) ) {
42- setchatModes ( [ chatModeLables . vector ] ) ;
43- }
27+ if ( ! chatModes . length ) {
28+ setchatModes ( [ chatModeLables [ 'graph+vector+fulltext' ] ] ) ;
4429 }
45- } , [ selectedRows . length , chatModes . length ] ) ;
46-
30+ } , [ chatModes . length ] ) ;
4731 const memoizedChatModes = useMemo ( ( ) => {
4832 return isGdsActive && isCommunityAllowed
4933 ? AvailableModes
5034 : AvailableModes ?. filter ( ( m ) => ! m . mode . includes ( chatModeLables [ 'global search+vector+fulltext' ] ) ) ;
5135 } , [ isGdsActive , isCommunityAllowed ] ) ;
5236 const menuItems = useMemo ( ( ) => {
5337 return memoizedChatModes ?. map ( ( m ) => {
54- const isDisabled = Boolean (
55- selectedRows . length && ! ( m . mode === chatModeLables . vector || m . mode === chatModeLables [ 'graph+vector' ] )
56- ) ;
5738 const handleModeChange = ( ) => {
58- if ( isDisabled ) {
59- setchatModes ( [ chatModeLables [ 'graph+vector' ] ] ) ;
60- } else if ( chatModes . includes ( m . mode ) ) {
61- setchatModes ( ( prev ) => prev . filter ( ( i ) => i != m . mode ) ) ;
39+ if ( chatModes . includes ( m . mode ) ) {
40+ if ( chatModes . length === 1 ) return ;
41+ setchatModes ( ( prev ) => prev . filter ( ( i ) => i !== m . mode ) ) ;
6242 } else {
6343 setchatModes ( ( prev ) => [ ...prev , m . mode ] ) ;
6444 }
@@ -78,30 +58,19 @@ export default function ChatModeToggle({
7858 </ div >
7959 ) ,
8060 onClick : handleModeChange ,
81- disabledCondition : isDisabled ,
61+ disabledCondition : false ,
8262 description : (
8363 < span >
8464 { chatModes . includes ( m . mode ) && (
8565 < >
8666 < StatusIndicator type = 'success' /> { chatModeLables . selected }
8767 </ >
8868 ) }
89- { isDisabled && (
90- < >
91- < StatusIndicator type = 'warning' /> { chatModeLables . unavailableChatMode }
92- </ >
93- ) }
9469 </ span >
9570 ) ,
9671 } ;
9772 } ) ;
98- } , [ chatModes . length , memoizedChatModes , closeHandler , selectedRows ] ) ;
99-
100- useEffect ( ( ) => {
101- if ( ! selectedRows . length && ! chatModes . length ) {
102- setchatModes ( [ ] ) ;
103- }
104- } , [ selectedRows . length , chatModes . length ] ) ;
73+ } , [ chatModes , memoizedChatModes , closeHandler ] ) ;
10574 return (
10675 < CustomMenu
10776 closeHandler = { closeHandler }
@@ -112,4 +81,4 @@ export default function ChatModeToggle({
11281 items = { menuItems }
11382 />
11483 ) ;
115- }
84+ }
0 commit comments