Skip to content

Commit 35f125b

Browse files
committed
wip
1 parent 03e8694 commit 35f125b

File tree

3 files changed

+91
-42
lines changed

3 files changed

+91
-42
lines changed
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
import { connect } from 'react-redux';
2+
import ConnectionFormModal from '@mongodb-js/connection-form';
3+
import type { ConnectionInfo } from '@mongodb-js/connection-storage/provider';
4+
import type {
5+
ConnectionId,
6+
ConnectionState,
7+
} from '../stores/connections-store-redux';
8+
9+
function shouldDisableConnectionEditing(connection: ConnectionState): boolean {
10+
return connection.status === 'connected';
11+
}
12+
13+
function mapState({
14+
isEditingConnectionInfoModalOpen,
15+
editingConnectionInfo,
16+
connectionErrors,
17+
connections,
18+
}: {
19+
isEditingConnectionInfoModalOpen: boolean;
20+
editingConnectionInfo: ConnectionInfo;
21+
connectionErrors: Record<string, Error | null>;
22+
connections: {
23+
byId: Record<ConnectionId, ConnectionState>;
24+
};
25+
}) {
26+
const disableEditingConnectedConnection = shouldDisableConnectionEditing(
27+
connections.byId[editingConnectionInfo.id]
28+
);
29+
30+
return {
31+
isOpen: isEditingConnectionInfoModalOpen,
32+
initialConnectionInfo: editingConnectionInfo,
33+
connectionErrorMessage: connectionErrors[editingConnectionInfo.id]?.message,
34+
disableEditingConnectedConnection,
35+
};
36+
}
37+
38+
function mapDispatch(
39+
{
40+
disconnect,
41+
cancelEditConnection,
42+
}: {
43+
//connect: (connectionInfo: ConnectionInfo) => Promise<void>;
44+
//saveAndConnect: (connectionInfo: ConnectionInfo) => Promise<void>;
45+
disconnect: (connectionId: string) => void;
46+
47+
//createNewConnection: () => void;
48+
//editConnection: (connectionId: string) => void;
49+
//saveEditedConnection: (connectionInfo: ConnectionInfo) => Promise<void>;
50+
cancelEditConnection: (connectionId: string) => void;
51+
/*
52+
duplicateConnection: (
53+
connectionId: string,
54+
options?: { autoDuplicate: boolean }
55+
) => void;
56+
*/
57+
//toggleConnectionFavoritedStatus: (connectionId: string) => void;
58+
//removeConnection: (connectionId: string) => void;
59+
60+
//removeAllRecentConnections: () => void;
61+
//showNonGenuineMongoDBWarningModal: (connectionId: string) => void;
62+
},
63+
{
64+
isEditingNewConnection,
65+
editingConnectionInfo,
66+
connections,
67+
}: {
68+
isEditingNewConnection: boolean;
69+
editingConnectionInfo: ConnectionInfo;
70+
connections: {
71+
byId: Record<ConnectionId, ConnectionState>;
72+
};
73+
}
74+
) {
75+
const disableEditingConnectedConnection = shouldDisableConnectionEditing(
76+
connections.byId[editingConnectionInfo.id]
77+
);
78+
79+
return {
80+
disconnect,
81+
};
82+
}
83+
84+
export default connect(mapState, mapDispatch)(ConnectionFormModal);

packages/compass-connections/src/index.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
export { default as SingleConnectionForm } from './components/legacy-connections';
2121
export { LegacyConnectionsModal } from './components/legacy-connections-modal';
2222
export { useConnectionFormPreferences } from './hooks/use-connection-form-preferences';
23+
import ConnectionModal from './components/connection-modal';
2324
import type { connect as devtoolsConnect } from 'mongodb-data-service';
2425
import type { ExtraConnectionData as ExtraConnectionDataForTelemetry } from '@mongodb-js/compass-telemetry';
2526
export type { ConnectionFeature } from './utils/connection-supports';
@@ -36,7 +37,12 @@ const ConnectionsComponent: React.FunctionComponent<{
3637
connectFn?: typeof devtoolsConnect | undefined;
3738
preloadStorageConnectionInfos?: ConnectionInfo[];
3839
}> = ({ children }) => {
39-
return <ConnectionActionsProvider>{children}</ConnectionActionsProvider>;
40+
return (
41+
<ConnectionActionsProvider>
42+
{children}
43+
<ConnectionModal />
44+
</ConnectionActionsProvider>
45+
);
4046
};
4147

4248
const CompassConnectionsPlugin = registerHadronPlugin(

packages/compass-sidebar/src/components/multiple-connections/sidebar.tsx

Lines changed: 0 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -229,47 +229,6 @@ export function MultipleConnectionSidebar({
229229
}}
230230
onOpenConnectViaModal={onOpenConnectViaModal}
231231
/>
232-
{editingConnectionInfo && (
233-
<ConnectionFormModal
234-
disableEditingConnectedConnection={
235-
disableEditingConnectedConnection
236-
}
237-
onDisconnectClicked={() => disconnect(editingConnectionInfo.id)}
238-
isOpen={isEditingConnectionInfoModalOpen}
239-
setOpen={(newOpen) => {
240-
// This is how leafygreen propagates `X` button click
241-
if (newOpen === false) {
242-
cancelEditConnection(editingConnectionInfo.id);
243-
}
244-
}}
245-
initialConnectionInfo={editingConnectionInfo}
246-
connectionErrorMessage={
247-
connectionErrors[editingConnectionInfo.id]?.message
248-
}
249-
openSettingsModal={openSettingsModal}
250-
{...formPreferences}
251-
onCancel={() => {
252-
cancelEditConnection(editingConnectionInfo.id);
253-
}}
254-
onSaveClicked={(connectionInfo) => {
255-
return saveEditedConnection(connectionInfo);
256-
}}
257-
onConnectClicked={
258-
isEditingNewConnection || disableEditingConnectedConnection
259-
? undefined
260-
: (connectionInfo) => {
261-
void connect(connectionInfo);
262-
}
263-
}
264-
onSaveAndConnectClicked={
265-
disableEditingConnectedConnection
266-
? undefined
267-
: (connectionInfo) => {
268-
void saveAndConnect(connectionInfo);
269-
}
270-
}
271-
/>
272-
)}
273232
<MappedCsfleModal
274233
connectionId={csfleModalConnectionId}
275234
onClose={onCloseCsfleModal}

0 commit comments

Comments
 (0)