Skip to content

Commit d95d2e2

Browse files
committed
broken
1 parent fc06013 commit d95d2e2

File tree

6 files changed

+93
-91
lines changed

6 files changed

+93
-91
lines changed

packages/compass-connections/src/components/connection-modal.tsx

Lines changed: 37 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
import React from 'react';
12
import { connect as reduxConnect } from '../stores/store-context';
2-
import ConnectionFormModal from '@mongodb-js/connection-form';
3+
import { ConnectionFormModal } from '@mongodb-js/connection-form';
34
import type { ConnectionInfo } from '@mongodb-js/connection-storage/provider';
45
import {
56
connect,
@@ -14,6 +15,26 @@ import type {
1415
ConnectionState,
1516
} from '../stores/connections-store-redux';
1617

18+
type ConnectionModalProps = Omit<
19+
React.ComponentProps<typeof ConnectionFormModal>,
20+
'initialConnectionInfo'
21+
> & { initialConnectionInfo?: ConnectionInfo };
22+
23+
const ConnectionModal: React.FunctionComponent<ConnectionModalProps> = ({
24+
initialConnectionInfo,
25+
...props
26+
}: ConnectionModalProps) => {
27+
if (!initialConnectionInfo) {
28+
return null;
29+
}
30+
return (
31+
<ConnectionFormModal
32+
initialConnectionInfo={initialConnectionInfo}
33+
{...props}
34+
/>
35+
);
36+
};
37+
1738
function shouldDisableConnectionEditing(connection: ConnectionState): boolean {
1839
return connection.status === 'connected';
1940
}
@@ -26,16 +47,19 @@ function mapState({
2647
}: {
2748
isEditingNewConnection: boolean;
2849
isEditingConnectionInfoModalOpen: boolean;
29-
editingConnectionInfoId: ConnectionId;
50+
editingConnectionInfoId?: ConnectionId;
3051
connections: {
3152
byId: Record<ConnectionId, ConnectionState>;
3253
};
3354
}) {
34-
const editingConnection = connections.byId[editingConnectionInfoId];
35-
const editingConnectionInfo = editingConnection.info;
55+
const editingConnection = editingConnectionInfoId
56+
? connections.byId[editingConnectionInfoId]
57+
: undefined;
58+
const editingConnectionInfo = editingConnection?.info;
3659

37-
const disableEditingConnectedConnection =
38-
shouldDisableConnectionEditing(editingConnection);
60+
const disableEditingConnectedConnection = editingConnection
61+
? shouldDisableConnectionEditing(editingConnection)
62+
: false;
3963

4064
return {
4165
isOpen: isEditingConnectionInfoModalOpen,
@@ -65,7 +89,7 @@ function mergeProps(
6589
saveEditedConnectionInfo: (connectionInfo: ConnectionInfo) => any;
6690
saveAndConnect: (connectionInfo: ConnectionInfo) => any;
6791
}
68-
) {
92+
): ConnectionModalProps {
6993
const {
7094
isOpen,
7195
initialConnectionInfo,
@@ -89,18 +113,20 @@ function mergeProps(
89113
connectionErrorMessage,
90114
disableEditingConnectedConnection,
91115

92-
onDisconnectClicked: () => disconnect(editingConnectionInfoId),
116+
onDisconnectClicked: () =>
117+
editingConnectionInfoId && disconnect(editingConnectionInfoId),
93118
setOpen: (newOpen: boolean) => {
94119
// This is how leafygreen propagates `X` button click
95120
if (newOpen === false) {
96-
cancelEditConnection(editingConnectionInfoId);
121+
editingConnectionInfoId &&
122+
cancelEditConnection(editingConnectionInfoId);
97123
}
98124
},
99125
openSettingsModal: () => {
100126
// TODO: this has to emit on the global app registry somehow
101127
},
102128
onCancel: () => {
103-
cancelEditConnection(editingConnectionInfoId);
129+
editingConnectionInfoId && cancelEditConnection(editingConnectionInfoId);
104130
},
105131
onSaveClicked: (connectionInfo: ConnectionInfo) => {
106132
return saveEditedConnectionInfo(connectionInfo);
@@ -119,8 +145,4 @@ function mergeProps(
119145
};
120146
}
121147

122-
export default reduxConnect(
123-
mapState,
124-
mapDispatch,
125-
mergeProps
126-
)(ConnectionFormModal);
148+
export default reduxConnect(mapState, mapDispatch, mergeProps)(ConnectionModal);

packages/compass-connections/src/index.tsx

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,55 @@
1+
import { preferencesLocator } from 'compass-preferences-model/provider';
12
import { registerHadronPlugin } from 'hadron-app-registry';
2-
import {
3-
autoconnectCheck,
4-
configureStore,
5-
loadConnections,
6-
} from './stores/connections-store-redux';
3+
import type { connect as devtoolsConnect } from 'mongodb-data-service';
74
import React, { useContext, useRef } from 'react';
85
import { createLoggerLocator } from '@mongodb-js/compass-logging/provider';
9-
import { telemetryLocator } from '@mongodb-js/compass-telemetry/provider';
10-
import { preferencesLocator } from 'compass-preferences-model/provider';
116
import { connectionStorageLocator } from '@mongodb-js/connection-storage/provider';
12-
import { ConnectionsStoreContext } from './stores/store-context';
7+
import type {
8+
ConnectionInfo,
9+
ConnectionStorage,
10+
} from '@mongodb-js/connection-storage/provider';
11+
import { telemetryLocator } from '@mongodb-js/compass-telemetry/provider';
12+
import type { ExtraConnectionData as ExtraConnectionDataForTelemetry } from '@mongodb-js/compass-telemetry';
13+
import ConnectionModal from './components/connection-modal';
1314
export { default as SingleConnectionForm } from './components/legacy-connections';
1415
export { LegacyConnectionsModal } from './components/legacy-connections-modal';
15-
export { useConnectionFormPreferences } from './hooks/use-connection-form-preferences';
16-
import type { connect as devtoolsConnect } from 'mongodb-data-service';
16+
import { useConnectionFormPreferences } from './hooks/use-connection-form-preferences';
17+
import {
18+
autoconnectCheck,
19+
configureStore,
20+
loadConnections,
21+
} from './stores/connections-store-redux';
22+
import {
23+
ConnectionsStoreContext,
24+
ConnectionActionsProvider,
25+
} from './stores/store-context';
1726
export type { ConnectionFeature } from './utils/connection-supports';
1827
export { connectionSupports } from './utils/connection-supports';
19-
import ConnectionsPlugin from './plugin';
28+
29+
const ConnectionsComponent: React.FunctionComponent<{
30+
appName: string;
31+
onExtraConnectionDataRequest: (
32+
connectionInfo: ConnectionInfo
33+
) => Promise<[ExtraConnectionDataForTelemetry, string | null]>;
34+
onAutoconnectInfoRequest?: (
35+
connectionStorage: ConnectionStorage
36+
) => Promise<ConnectionInfo | undefined>;
37+
connectFn?: typeof devtoolsConnect | undefined;
38+
preloadStorageConnectionInfos?: ConnectionInfo[];
39+
}> = ({ children }) => {
40+
const formPreferences = useConnectionFormPreferences();
41+
return (
42+
<ConnectionActionsProvider>
43+
{children}
44+
<ConnectionModal {...formPreferences} />
45+
</ConnectionActionsProvider>
46+
);
47+
};
2048

2149
const CompassConnectionsPlugin = registerHadronPlugin(
2250
{
2351
name: 'CompassConnections',
24-
component: ConnectionsPlugin,
52+
component: ConnectionsComponent,
2553
activate(
2654
initialProps,
2755
{ logger, preferences, connectionStorage, track },

packages/compass-connections/src/plugin.tsx

Lines changed: 0 additions & 50 deletions
This file was deleted.

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { useCallback, useState } from 'react';
22
import { type MapStateToProps, connect } from 'react-redux';
33
import {
44
ConnectionStatus,
5-
useConnections,
5+
useConnectionActions,
66
useConnectionsWithStatus,
77
} from '@mongodb-js/compass-connections/provider';
88
import { type ConnectionInfo } from '@mongodb-js/connection-info';
@@ -113,9 +113,9 @@ export function MultipleConnectionSidebar({
113113
editConnection,
114114
removeConnection,
115115
duplicateConnection,
116-
toggleConnectionFavoritedStatus,
116+
toggleFavoritedConnectionStatus,
117117
showNonGenuineMongoDBWarningModal,
118-
} = useConnections();
118+
} = useConnectionActions();
119119

120120
const findActiveConnection = (id: string) => {
121121
return connectionsWithStatus.find(
@@ -194,7 +194,7 @@ export function MultipleConnectionSidebar({
194194
}}
195195
onCopyConnectionString={onCopyConnectionString}
196196
onToggleFavoriteConnectionInfo={(connectionInfo) => {
197-
void toggleConnectionFavoritedStatus(connectionInfo.id);
197+
void toggleFavoritedConnectionStatus(connectionInfo.id);
198198
}}
199199
onOpenConnectionInfo={onOpenConnectionInfo}
200200
onDisconnect={(id) => {

packages/compass-welcome/src/components/welcome-tab.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
Icon,
1717
} from '@mongodb-js/compass-components';
1818
import { useTelemetry } from '@mongodb-js/compass-telemetry/provider';
19-
import { useConnections } from '@mongodb-js/compass-connections/provider';
19+
import { useConnectionActions } from '@mongodb-js/compass-connections/provider';
2020
import { usePreference } from 'compass-preferences-model/provider';
2121

2222
const sectionContainerStyles = css({
@@ -218,7 +218,7 @@ function WelcomeImage() {
218218
}
219219

220220
export default function WelcomeTab() {
221-
const { createNewConnection } = useConnections();
221+
const { createNewConnection } = useConnectionActions();
222222
const enableCreatingNewConnections = usePreference(
223223
'enableCreatingNewConnections'
224224
);

packages/connection-form/src/components/connection-form-modal.tsx

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,15 @@ import type { Dispatch, SetStateAction } from 'react';
44
import type { ConnectionFormProps } from './connection-form';
55
import ConnectionForm from './connection-form';
66

7+
type ConnectionFormModalProps = {
8+
isOpen: boolean;
9+
setOpen: (open: boolean) => void | Dispatch<SetStateAction<boolean>>;
10+
onCancel: () => void; // when using
11+
} & Omit<
12+
ConnectionFormProps,
13+
'showFooterBorder' | 'showHelperCardsInForm' | 'onAdvancedOptionsToggle'
14+
>;
15+
716
const modalStyles = css({
817
'& > div': {
918
height: '100%',
@@ -33,14 +42,7 @@ export default function ConnectionFormModal({
3342
isOpen,
3443
setOpen,
3544
...rest
36-
}: {
37-
isOpen: boolean;
38-
setOpen: (open: boolean) => void | Dispatch<SetStateAction<boolean>>;
39-
onCancel: () => void; // when using
40-
} & Omit<
41-
ConnectionFormProps,
42-
'showFooterBorder' | 'showHelperCardsInForm' | 'onAdvancedOptionsToggle'
43-
>): React.ReactElement {
45+
}: ConnectionFormModalProps): React.ReactElement {
4446
const [advancedOpen, setAdvancedOpen] = useState(false);
4547

4648
return (

0 commit comments

Comments
 (0)