diff --git a/Composer/packages/client/__tests__/routers.test.tsx b/Composer/packages/client/__tests__/routers.test.tsx index 77f1b7e3bb..29cd5ad663 100644 --- a/Composer/packages/client/__tests__/routers.test.tsx +++ b/Composer/packages/client/__tests__/routers.test.tsx @@ -13,6 +13,7 @@ import { wrapWithRecoil } from './testUtils'; jest.mock('axios', () => ({ create: jest.fn().mockReturnThis(), get: jest.fn(), + post: jest.fn(() => new Promise((resolve) => resolve({}))), request: jest.fn(), interceptors: { request: { use: jest.fn() }, diff --git a/Composer/packages/client/src/recoilModel/dispatchers/user.ts b/Composer/packages/client/src/recoilModel/dispatchers/user.ts index 7879dcff89..6f8e82ede1 100644 --- a/Composer/packages/client/src/recoilModel/dispatchers/user.ts +++ b/Composer/packages/client/src/recoilModel/dispatchers/user.ts @@ -76,7 +76,7 @@ export const userDispatcher = () => { }); const updateUserSettings = useRecoilCallback( - (callbackHelpers: CallbackInterface) => async (settings: Partial) => { + (callbackHelpers: CallbackInterface) => async (settings: Partial = {}) => { const { set } = callbackHelpers; if (settings.appLocale != null) { await loadLocale(settings.appLocale); diff --git a/Composer/packages/client/src/telemetry/useInitializeLogger.ts b/Composer/packages/client/src/telemetry/useInitializeLogger.ts index 2bc5af0969..323d243e06 100644 --- a/Composer/packages/client/src/telemetry/useInitializeLogger.ts +++ b/Composer/packages/client/src/telemetry/useInitializeLogger.ts @@ -6,7 +6,7 @@ import { useRecoilValue } from 'recoil'; import { PageNames } from '@bfc/shared'; import camelCase from 'lodash/camelCase'; -import { currentProjectIdState, featureFlagsState, userSettingsState } from '../recoilModel'; +import { currentProjectIdState, dispatcherState, featureFlagsState, userSettingsState } from '../recoilModel'; import { getPageName } from '../utils/getPageName'; import { useLocation } from '../utils/hooks'; @@ -15,6 +15,7 @@ import TelemetryClient from './TelemetryClient'; const { ipcRenderer } = window; export const useInitializeLogger = () => { + const { updateUserSettings } = useRecoilValue(dispatcherState); const rootProjectId = useRecoilValue(currentProjectIdState); const { telemetry } = useRecoilValue(userSettingsState); const featureFlags = useRecoilValue(featureFlagsState); @@ -34,6 +35,12 @@ export const useInitializeLogger = () => { TelemetryClient.setup(telemetry, { rootProjectId, page, ...reducedFeatureFlags }); + useEffect(() => { + // Update user settings when the user opens the app to ensure + // the data collection settings on the server are current + updateUserSettings(); + }, []); + useEffect(() => { ipcRenderer?.on('session-update', (_event, name) => { switch (name) {