Skip to content

Commit a162f0f

Browse files
committed
chore(welcome): refactor welcome modal to a plugin; only change showedNetworkOptIn after welcome modal is closed
1 parent f42a8a5 commit a162f0f

File tree

19 files changed

+174
-285
lines changed

19 files changed

+174
-285
lines changed

packages/compass-preferences-model/src/compass-web-preferences-access.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,6 @@ export class CompassWebPreferencesAccess implements PreferencesAccess {
3131
return this._preferences.getPreferences();
3232
}
3333

34-
ensureDefaultConfigurableUserPreferences() {
35-
return this._preferences.ensureDefaultConfigurableUserPreferences();
36-
}
37-
3834
getConfigurableUserPreferences() {
3935
return Promise.resolve(this._preferences.getConfigurableUserPreferences());
4036
}

packages/compass-preferences-model/src/preferences-schema.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ export const storedUserPreferencesProps: Required<{
594594
long: 'Allow Compass to make requests to a 3rd party mapping service.',
595595
},
596596
deriveValue: deriveNetworkTrafficOptionState('enableMaps'),
597-
validator: z.boolean().default(false),
597+
validator: z.boolean().default(true),
598598
type: 'boolean',
599599
},
600600
enableGenAIFeatures: {
@@ -621,7 +621,7 @@ export const storedUserPreferencesProps: Required<{
621621
long: 'Enables a tool that our Product team can use to occasionally reach out for feedback about Compass.',
622622
},
623623
deriveValue: deriveNetworkTrafficOptionState('enableFeedbackPanel'),
624-
validator: z.boolean().default(false),
624+
validator: z.boolean().default(true),
625625
type: 'boolean',
626626
},
627627
/**
@@ -637,7 +637,7 @@ export const storedUserPreferencesProps: Required<{
637637
long: 'Allow Compass to send anonymous usage statistics.',
638638
},
639639
deriveValue: deriveNetworkTrafficOptionState('trackUsageStatistics'),
640-
validator: z.boolean().default(false),
640+
validator: z.boolean().default(true),
641641
type: 'boolean',
642642
},
643643
/**
@@ -652,7 +652,7 @@ export const storedUserPreferencesProps: Required<{
652652
long: 'Allow Compass to periodically check for new updates.',
653653
},
654654
deriveValue: deriveNetworkTrafficOptionState('autoUpdates'),
655-
validator: z.boolean().default(false),
655+
validator: z.boolean().default(true),
656656
type: 'boolean',
657657
},
658658
/**

packages/compass-preferences-model/src/preferences.spec.ts

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ describe('Preferences class', function () {
5050
const preferences = await setupPreferences(tmpdir);
5151
const result = preferences.getPreferences();
5252
expect(result.id).to.equal('General');
53-
expect(result.enableMaps).to.equal(false);
53+
expect(result.enableMaps).to.equal(true);
5454
expect(result.enableShell).to.equal(true);
5555
});
5656

@@ -98,13 +98,12 @@ describe('Preferences class', function () {
9898
const preferences = await setupPreferences(tmpdir);
9999
const calls: any[] = [];
100100
preferences.onPreferencesChanged((prefs) => calls.push(prefs));
101-
await preferences.savePreferences({ enableMaps: true });
102-
expect(calls).to.deep.equal([{ enableMaps: true }]);
101+
await preferences.savePreferences({ enableMaps: false });
102+
expect(calls).to.deep.equal([{ enableMaps: false }]);
103103
});
104104

105105
it('can return user-configurable preferences after setting their defaults', async function () {
106106
const preferences = await setupPreferences(tmpdir);
107-
await preferences.ensureDefaultConfigurableUserPreferences();
108107
const result = preferences.getConfigurableUserPreferences();
109108
expect(result).not.to.have.property('id');
110109
expect(result.enableMaps).to.equal(true);
@@ -121,7 +120,6 @@ describe('Preferences class', function () {
121120
trackUsageStatistics: false,
122121
},
123122
});
124-
await preferences.ensureDefaultConfigurableUserPreferences();
125123
const result = preferences.getConfigurableUserPreferences();
126124
expect(result).not.to.have.property('id');
127125
expect(result.autoUpdates).to.equal(true);
@@ -214,18 +212,10 @@ describe('Preferences class', function () {
214212
const preferences = await setupPreferences(tmpdir);
215213
const calls: any[] = [];
216214
preferences.onPreferencesChanged((prefs) => calls.push(prefs));
217-
await preferences.ensureDefaultConfigurableUserPreferences();
218215
preferences.getConfigurableUserPreferences(); // set defaults
219216
await preferences.savePreferences({ networkTraffic: false });
220217
await preferences.savePreferences({ readOnly: true });
221218
expect(calls).to.deep.equal([
222-
{
223-
showedNetworkOptIn: true,
224-
enableMaps: true,
225-
enableFeedbackPanel: true,
226-
trackUsageStatistics: true,
227-
autoUpdates: true,
228-
},
229219
{
230220
networkTraffic: false,
231221
enableMaps: false,

packages/compass-preferences-model/src/preferences.ts

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ export interface PreferencesAccess {
2222
): Promise<AllPreferences>;
2323
refreshPreferences(): Promise<AllPreferences>;
2424
getPreferences(): AllPreferences;
25-
ensureDefaultConfigurableUserPreferences(): Promise<void>;
2625
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences>;
2726
getPreferenceStates(): Promise<PreferenceStateInformation>;
2827
onPreferenceValueChanged<K extends keyof AllPreferences>(
@@ -248,26 +247,6 @@ export class Preferences {
248247
return { values, states };
249248
}
250249

251-
/**
252-
* If this is the first call to this method, this sets the defaults for
253-
* user preferences.
254-
*/
255-
async ensureDefaultConfigurableUserPreferences(): Promise<void> {
256-
// Set the defaults and also update showedNetworkOptIn flag.
257-
const { showedNetworkOptIn } = this.getPreferences();
258-
if (!showedNetworkOptIn) {
259-
await this.savePreferences({
260-
autoUpdates: true,
261-
enableGenAIFeatures: true,
262-
enableMaps: true,
263-
trackUsageStatistics: true,
264-
enableFeedbackPanel: true,
265-
showedNetworkOptIn: true,
266-
theme: 'LIGHT',
267-
});
268-
}
269-
}
270-
271250
/**
272251
* Return the subset of preferences that can be edited through the UI.
273252
*

packages/compass-preferences-model/src/read-only-preferences-access.ts

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,6 @@ export class ReadOnlyPreferenceAccess implements PreferencesAccess {
2929
return this._preferences.getPreferences();
3030
}
3131

32-
ensureDefaultConfigurableUserPreferences() {
33-
return this._preferences.ensureDefaultConfigurableUserPreferences();
34-
}
35-
3632
getConfigurableUserPreferences() {
3733
return Promise.resolve(this._preferences.getConfigurableUserPreferences());
3834
}

packages/compass-preferences-model/src/renderer-ipc.spec.ts

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ describe('Renderer IPC', function () {
1010
'compass:get-preferences'() {
1111
return { getPreferences: 1 };
1212
},
13-
'compass:ensure-default-configurable-user-preferences'() {
14-
return { ensureDefaultConfigurableUserPreferences: 1 };
15-
},
1613
'compass:get-configurable-user-preferences'() {
1714
return { getConfigurableUserPreferences: 1 };
1815
},
@@ -40,12 +37,6 @@ describe('Renderer IPC', function () {
4037
});
4138
});
4239

43-
it('should be able to call ensureDefaultConfigurableUserPreferences', async function () {
44-
expect(
45-
await preferencesIpc.ensureDefaultConfigurableUserPreferences()
46-
).to.deep.equal({ ensureDefaultConfigurableUserPreferences: 1 });
47-
});
48-
4940
it('should be able to call getConfigurableUserPreferences', async function () {
5041
expect(await preferencesIpc.getConfigurableUserPreferences()).to.deep.equal(
5142
{ getConfigurableUserPreferences: 1 }

packages/compass-preferences-model/src/renderer-ipc.ts

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@ export const makePreferencesIpc = (
5252
return refreshCachedPreferences();
5353
},
5454
getPreferences,
55-
ensureDefaultConfigurableUserPreferences(): Promise<void> {
56-
return ipcRenderer.invoke(
57-
'compass:ensure-default-configurable-user-preferences'
58-
);
59-
},
6055
getConfigurableUserPreferences(): Promise<UserConfigurablePreferences> {
6156
return ipcRenderer.invoke('compass:get-configurable-user-preferences');
6257
},

packages/compass-preferences-model/src/setup-preferences.ts

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,6 @@ export async function setupPreferences(
7272
return preferences.getPreferenceStates();
7373
});
7474

75-
ipcMain.handle('compass:ensure-default-configurable-user-preferences', () => {
76-
return preferences.ensureDefaultConfigurableUserPreferences();
77-
});
78-
7975
ipcMain.handle('compass:get-configurable-user-preferences', () => {
8076
return preferences.getConfigurableUserPreferences();
8177
});
@@ -103,9 +99,6 @@ const makePreferenceMain = (
10399
getPreferences(): AllPreferences {
104100
return preferences()?.getPreferences?.() ?? ({} as AllPreferences);
105101
},
106-
async ensureDefaultConfigurableUserPreferences(): Promise<void> {
107-
return preferences()?.ensureDefaultConfigurableUserPreferences?.();
108-
},
109102
// eslint-disable-next-line @typescript-eslint/require-await
110103
async getConfigurableUserPreferences(): Promise<UserConfigurablePreferences> {
111104
return (

packages/compass-settings/src/stores/index.ts

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import type { SettingsTabId } from './settings';
1111
import { openModal, reducer as settingsReducer } from './settings';
1212
import type { Logger } from '@mongodb-js/compass-logging/provider';
1313
import type { PreferencesAccess } from 'compass-preferences-model';
14+
import type { ActivateHelpers } from '@mongodb-js/compass-app-registry';
1415

1516
export type Public<T> = { [K in keyof T]: T[K] };
1617

@@ -65,25 +66,26 @@ export type SettingsThunkAction<
6566
A extends AnyAction = AnyAction
6667
> = ThunkAction<R, RootState, SettingsThunkExtraArgs, A>;
6768

68-
const onActivated = (_: unknown, services: SettingsPluginServices) => {
69+
const onActivated = (
70+
_: unknown,
71+
services: SettingsPluginServices,
72+
{ on, cleanup }: ActivateHelpers
73+
) => {
6974
const store = configureStore(services);
7075
const { globalAppRegistry } = services;
7176

7277
const onOpenSettings = (tabId?: SettingsTabId) => {
7378
void store.dispatch(openModal(tabId));
7479
};
7580

76-
ipcRenderer?.on('window:show-settings', () => onOpenSettings());
77-
globalAppRegistry.on('open-compass-settings', onOpenSettings);
81+
if (ipcRenderer) {
82+
on(ipcRenderer, 'window:show-settings', () => onOpenSettings());
83+
}
84+
on(globalAppRegistry, 'open-compass-settings', onOpenSettings);
7885

7986
return {
8087
store,
81-
deactivate() {
82-
ipcRenderer?.removeListener('window:show-settings', () =>
83-
onOpenSettings()
84-
);
85-
globalAppRegistry.removeListener('open-compass-settings', onOpenSettings);
86-
},
88+
deactivate: cleanup,
8789
};
8890
};
8991

packages/compass-settings/src/stores/preferences-sandbox.ts

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,7 @@ export class PreferencesSandbox {
1818
constructor(
1919
private preferences: Pick<
2020
PreferencesAccess,
21-
| 'createSandbox'
22-
| 'ensureDefaultConfigurableUserPreferences'
23-
| 'getPreferences'
24-
| 'savePreferences'
21+
'createSandbox' | 'getPreferences' | 'savePreferences'
2522
>
2623
) {}
2724

0 commit comments

Comments
 (0)