Skip to content

Commit 03cf21b

Browse files
committed
fix(e2e): check preference after async operation during connection
1 parent bad01d0 commit 03cf21b

File tree

2 files changed

+24
-10
lines changed

2 files changed

+24
-10
lines changed

packages/compass-connections/src/components/end-of-life-connection-modal.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ const modalBodyStyles = css({
2020

2121
export function showEndOfLifeMongoDBWarningModal(
2222
connectionInfo?: ConnectionInfo,
23-
version?: string
23+
version?: string,
24+
closeSignal?: AbortSignal
2425
) {
2526
return showConfirmation({
2627
title: 'End-of-life MongoDB Detected',
@@ -48,5 +49,6 @@ export function showEndOfLifeMongoDBWarningModal(
4849
</Link>
4950
</>
5051
),
52+
signal: closeSignal,
5153
});
5254
}

packages/compass-connections/src/stores/connections-store-redux.ts

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2243,15 +2243,13 @@ async function shouldShowEndOfLifeWarning(
22432243
debug: Logger['debug']
22442244
) {
22452245
try {
2246-
const { showEndOfLifeConnectionModal, networkTraffic } =
2247-
preferences.getPreferences();
2248-
if (!showEndOfLifeConnectionModal) {
2249-
return;
2250-
}
22512246
const latestEndOfLifeServerVersion = await getLatestEndOfLifeServerVersion(
2252-
networkTraffic
2247+
preferences.getPreferences().networkTraffic
2248+
);
2249+
return (
2250+
preferences.getPreferences().showEndOfLifeConnectionModal &&
2251+
isEndOfLifeVersion(serverVersion, latestEndOfLifeServerVersion)
22532252
);
2254-
return isEndOfLifeVersion(serverVersion, latestEndOfLifeServerVersion);
22552253
} catch (err) {
22562254
debug(
22572255
'failed to get instance details to determine if the server version is end-of-life',
@@ -2265,10 +2263,24 @@ export const showEndOfLifeMongoDBWarningModal = (
22652263
connectionId: string,
22662264
version: string
22672265
): ConnectionsThunkAction<void> => {
2268-
return (_dispatch, getState, { track }) => {
2266+
return (_dispatch, getState, { track, preferences }) => {
2267+
const abortController = new AbortController();
2268+
const removeListener = preferences.onPreferenceValueChanged(
2269+
'showEndOfLifeConnectionModal',
2270+
(shouldShow) => {
2271+
if (!shouldShow) {
2272+
abortController.abort();
2273+
removeListener();
2274+
}
2275+
}
2276+
);
22692277
const connectionInfo = getCurrentConnectionInfo(getState(), connectionId);
22702278
track('Screen', { name: 'end_of_life_mongodb_modal' }, connectionInfo);
2271-
void _showEndOfLifeMongoDBWarningModal(connectionInfo, version);
2279+
void _showEndOfLifeMongoDBWarningModal(
2280+
connectionInfo,
2281+
version,
2282+
abortController.signal
2283+
);
22722284
};
22732285
};
22742286

0 commit comments

Comments
 (0)