fix(editor): Don't wait for cloud plan store to initialize (no-changelog) (#17198)

This commit is contained in:
Jaakko Husso
2025-07-11 10:08:15 +03:00
committed by GitHub
parent ced854df2c
commit c96d34b64c
3 changed files with 63 additions and 19 deletions

View File

@@ -176,7 +176,7 @@ describe('Init', () => {
typeof useUsersStore typeof useUsersStore
>); >);
await initializeAuthenticatedFeatures(); await initializeAuthenticatedFeatures(false);
expect(cloudStoreSpy).not.toHaveBeenCalled(); expect(cloudStoreSpy).not.toHaveBeenCalled();
expect(sourceControlSpy).not.toHaveBeenCalled(); expect(sourceControlSpy).not.toHaveBeenCalled();
expect(nodeTranslationSpy).not.toHaveBeenCalled(); expect(nodeTranslationSpy).not.toHaveBeenCalled();
@@ -184,7 +184,7 @@ describe('Init', () => {
}); });
it('should init authenticated features only once if user is logged in', async () => { it('should init authenticated features only once if user is logged in', async () => {
const cloudStoreSpy = vi.spyOn(cloudPlanStore, 'initialize'); const cloudStoreSpy = vi.spyOn(cloudPlanStore, 'initialize').mockResolvedValue();
const sourceControlSpy = vi.spyOn(sourceControlStore, 'getPreferences'); const sourceControlSpy = vi.spyOn(sourceControlStore, 'getPreferences');
const nodeTranslationSpy = vi.spyOn(nodeTypesStore, 'getNodeTranslationHeaders'); const nodeTranslationSpy = vi.spyOn(nodeTypesStore, 'getNodeTranslationHeaders');
const versionsSpy = vi.spyOn(versionsStore, 'checkForNewVersions'); const versionsSpy = vi.spyOn(versionsStore, 'checkForNewVersions');
@@ -192,7 +192,7 @@ describe('Init', () => {
typeof useUsersStore typeof useUsersStore
>); >);
await initializeAuthenticatedFeatures(); await initializeAuthenticatedFeatures(false);
expect(cloudStoreSpy).toHaveBeenCalled(); expect(cloudStoreSpy).toHaveBeenCalled();
expect(sourceControlSpy).toHaveBeenCalled(); expect(sourceControlSpy).toHaveBeenCalled();
@@ -204,7 +204,46 @@ describe('Init', () => {
expect(cloudStoreSpy).toHaveBeenCalledTimes(1); expect(cloudStoreSpy).toHaveBeenCalledTimes(1);
}); });
it('should handle cloud plan initialization error', async () => {
const cloudStoreSpy = vi
.spyOn(cloudPlanStore, 'initialize')
.mockRejectedValue(new AxiosError('Something went wrong', '404'));
const sourceControlSpy = vi.spyOn(sourceControlStore, 'getPreferences');
const nodeTranslationSpy = vi.spyOn(nodeTypesStore, 'getNodeTranslationHeaders');
const versionsSpy = vi.spyOn(versionsStore, 'checkForNewVersions');
vi.mocked(useUsersStore).mockReturnValue({ currentUser: { id: '123' } } as ReturnType<
typeof useUsersStore
>);
await initializeAuthenticatedFeatures(false);
expect(cloudStoreSpy).toHaveBeenCalled();
expect(sourceControlSpy).toHaveBeenCalled();
expect(nodeTranslationSpy).toHaveBeenCalled();
expect(versionsSpy).toHaveBeenCalled();
});
it('should initialize even if cloud requests get stuck', async () => {
const cloudStoreSpy = vi.spyOn(cloudPlanStore, 'initialize').mockImplementation(async () => {
await new Promise((resolve) => setTimeout(resolve, 10000));
});
const sourceControlSpy = vi.spyOn(sourceControlStore, 'getPreferences');
const nodeTranslationSpy = vi.spyOn(nodeTypesStore, 'getNodeTranslationHeaders');
const versionsSpy = vi.spyOn(versionsStore, 'checkForNewVersions');
vi.mocked(useUsersStore).mockReturnValue({ currentUser: { id: '123' } } as ReturnType<
typeof useUsersStore
>);
await initializeAuthenticatedFeatures(false);
expect(cloudStoreSpy).toHaveBeenCalled();
expect(sourceControlSpy).toHaveBeenCalled();
expect(nodeTranslationSpy).toHaveBeenCalled();
expect(versionsSpy).toHaveBeenCalled();
}, 5000);
it('should handle source control initialization error', async () => { it('should handle source control initialization error', async () => {
vi.spyOn(cloudPlanStore, 'initialize').mockResolvedValue();
vi.mocked(useUsersStore).mockReturnValue({ currentUser: { id: '123' } } as ReturnType< vi.mocked(useUsersStore).mockReturnValue({ currentUser: { id: '123' } } as ReturnType<
typeof useUsersStore typeof useUsersStore
>); >);

View File

@@ -148,9 +148,9 @@ export async function initializeAuthenticatedFeatures(
} }
if (settingsStore.isCloudDeployment) { if (settingsStore.isCloudDeployment) {
try { void cloudPlanStore
await cloudPlanStore.initialize(); .initialize()
.then(() => {
if (cloudPlanStore.userIsTrialing) { if (cloudPlanStore.userIsTrialing) {
if (cloudPlanStore.trialExpired) { if (cloudPlanStore.trialExpired) {
uiStore.pushBannerToStack('TRIAL_OVER'); uiStore.pushBannerToStack('TRIAL_OVER');
@@ -160,9 +160,10 @@ export async function initializeAuthenticatedFeatures(
} else if (cloudPlanStore.currentUserCloudInfo?.confirmed === false) { } else if (cloudPlanStore.currentUserCloudInfo?.confirmed === false) {
uiStore.pushBannerToStack('EMAIL_CONFIRMATION'); uiStore.pushBannerToStack('EMAIL_CONFIRMATION');
} }
} catch (e) { })
console.error('Failed to initialize cloud plan store:', e); .catch((error) => {
} console.error('Failed to initialize cloud plan store:', error);
});
} }
if (insightsStore.isSummaryEnabled) { if (insightsStore.isSummaryEnabled) {

View File

@@ -130,7 +130,9 @@ export const useVersionsStore = defineStore(STORES.VERSIONS, () => {
const versions = await versionsApi.getNextVersions(endpoint, current, instanceId); const versions = await versionsApi.getNextVersions(endpoint, current, instanceId);
setVersions({ versions, currentVersion: current }); setVersions({ versions, currentVersion: current });
} }
} catch (e) {} } catch (e) {
console.error('Failed to fetch versions:', e);
}
}; };
const setVersions = (params: SetVersionParams) => { const setVersions = (params: SetVersionParams) => {
@@ -208,7 +210,9 @@ export const useVersionsStore = defineStore(STORES.VERSIONS, () => {
} }
} }
} }
} catch (e) {} } catch (e) {
console.error('Failed to fetch Whats New section:', e);
}
}; };
const initialize = (settings: IVersionNotificationSettings) => { const initialize = (settings: IVersionNotificationSettings) => {