@@ -9,18 +9,27 @@ import {
99} from '@mongodb-js/compass-components' ;
1010import { fetchItems } from '../stores/aggregations-queries-items' ;
1111import type { Item } from '../stores/aggregations-queries-items' ;
12- import { openSavedItem } from '../stores/open-item' ;
12+ import {
13+ openSavedItem ,
14+ openSelectConnectionAndNamespaceModal ,
15+ } from '../stores/open-item' ;
1316import type { RootState } from '../stores' ;
1417import { SavedItemCard , CARD_WIDTH , CARD_HEIGHT } from './saved-item-card' ;
1518import type { Action } from './saved-item-card' ;
1619import { NoSavedItems , NoSearchResults } from './empty-list-items' ;
17- import OpenItemModal from './open-item-modal' ;
1820import EditItemModal from './edit-item-modal' ;
1921import { useGridFilters , useFilteredItems } from '../hooks/use-grid-filters' ;
2022import { editItem } from '../stores/edit-item' ;
2123import { confirmDeleteItem } from '../stores/delete-item' ;
2224import { copyToClipboard } from '../stores/copy-to-clipboard' ;
2325import { useTrackOnChange } from '@mongodb-js/compass-logging/provider' ;
26+ import {
27+ type ConnectionInfo ,
28+ useActiveConnections ,
29+ } from '@mongodb-js/compass-connections/provider' ;
30+ import SelectConnectionModal from './select-connection-modal' ;
31+ import SelectConnectionAndNamespaceModal from './select-connection-and-namespace-modal' ;
32+ import NoActiveConnectionsModal from './no-active-connections-modal' ;
2433
2534const sortBy : { name : keyof Item ; label : string } [ ] = [
2635 {
@@ -73,7 +82,11 @@ export type AggregationsQueriesListProps = {
7382 loading : boolean ;
7483 items : Item [ ] ;
7584 onMount ( ) : void ;
76- onOpenItem ( id : string ) : void ;
85+ onOpenItem ( id : string , activeConnections : ConnectionInfo [ ] ) : void ;
86+ onOpenItemForDiffTarget (
87+ id : string ,
88+ activeConnections : ConnectionInfo [ ]
89+ ) : void ;
7790 onEditItem ( id : string ) : void ;
7891 onDeleteItem ( id : string ) : void ;
7992 onCopyToClipboard ( id : string ) : void ;
@@ -84,6 +97,7 @@ export const AggregationsQueriesList = ({
8497 items,
8598 onMount,
8699 onOpenItem,
100+ onOpenItemForDiffTarget,
87101 onEditItem,
88102 onDeleteItem,
89103 onCopyToClipboard,
@@ -92,6 +106,22 @@ export const AggregationsQueriesList = ({
92106 void onMount ( ) ;
93107 } , [ onMount ] ) ;
94108
109+ const activeConnections = useActiveConnections ( ) ;
110+
111+ const handleOpenItem = useCallback (
112+ ( id : string ) => {
113+ onOpenItem ( id , activeConnections ) ;
114+ } ,
115+ [ activeConnections , onOpenItem ]
116+ ) ;
117+
118+ const handleOpenItemForDiffTarget = useCallback (
119+ ( id : string ) => {
120+ onOpenItemForDiffTarget ( id , activeConnections ) ;
121+ } ,
122+ [ activeConnections , onOpenItemForDiffTarget ]
123+ ) ;
124+
95125 const {
96126 controls : filterControls ,
97127 conditions : filters ,
@@ -155,7 +185,10 @@ export const AggregationsQueriesList = ({
155185 ( id : string , actionName : Action ) => {
156186 switch ( actionName ) {
157187 case 'open' :
158- onOpenItem ( id ) ;
188+ handleOpenItem ( id ) ;
189+ return ;
190+ case 'open-in' :
191+ handleOpenItemForDiffTarget ( id ) ;
159192 return ;
160193 case 'rename' :
161194 onEditItem ( id ) ;
@@ -168,7 +201,13 @@ export const AggregationsQueriesList = ({
168201 return ;
169202 }
170203 } ,
171- [ onOpenItem , onEditItem , onDeleteItem , onCopyToClipboard ]
204+ [
205+ handleOpenItem ,
206+ handleOpenItemForDiffTarget ,
207+ onEditItem ,
208+ onDeleteItem ,
209+ onCopyToClipboard ,
210+ ]
172211 ) ;
173212
174213 const renderItem : React . ComponentProps < typeof VirtualGrid > [ 'renderItem' ] =
@@ -228,7 +267,9 @@ export const AggregationsQueriesList = ({
228267 classNames = { { row : rowStyles } }
229268 resetActiveItemOnBlur = { false }
230269 > </ VirtualGrid >
231- < OpenItemModal > </ OpenItemModal >
270+ < SelectConnectionModal />
271+ < SelectConnectionAndNamespaceModal />
272+ < NoActiveConnectionsModal />
232273 < EditItemModal > </ EditItemModal >
233274 </ ControlsContext . Provider >
234275 ) ;
@@ -242,6 +283,7 @@ const mapState = ({ savedItems: { items, loading } }: RootState) => ({
242283const mapDispatch = {
243284 onMount : fetchItems ,
244285 onOpenItem : openSavedItem ,
286+ onOpenItemForDiffTarget : openSelectConnectionAndNamespaceModal ,
245287 onEditItem : editItem ,
246288 onDeleteItem : confirmDeleteItem ,
247289 onCopyToClipboard : copyToClipboard ,
0 commit comments