fix(onboarding): keep skip completion moving after task sync failure (#1771)

This commit is contained in:
Aqil Aziz
2026-05-14 21:06:25 -07:00
committed by GitHub
parent fa860a2a43
commit 1dab858f14
2 changed files with 30 additions and 9 deletions
+13 -9
View File
@@ -65,15 +65,19 @@ const OnboardingLayout = () => {
connectedSources: draft.connectedSources,
});
await setOnboardingTasks({
accessibilityPermissionGranted:
snapshot.localState.onboardingTasks?.accessibilityPermissionGranted ?? false,
localModelConsentGiven: false,
localModelDownloadStarted: false,
enabledTools: getDefaultEnabledTools(),
connectedSources: draft.connectedSources,
updatedAtMs: Date.now(),
});
try {
await setOnboardingTasks({
accessibilityPermissionGranted:
snapshot.localState.onboardingTasks?.accessibilityPermissionGranted ?? false,
localModelConsentGiven: false,
localModelDownloadStarted: false,
enabledTools: getDefaultEnabledTools(),
connectedSources: draft.connectedSources,
updatedAtMs: Date.now(),
});
} catch (e) {
console.warn('[onboarding] Failed to persist onboarding tasks; continuing completion', e);
}
try {
await userApi.onboardingComplete();
@@ -228,4 +228,21 @@ describe('OnboardingLayout — Joyride walkthrough integration (#1123)', () => {
// Navigation should still proceed even when the flag cannot be written.
expect(screen.getByTestId('home-page')).toBeInTheDocument();
});
it('still completes onboarding when persisting onboarding tasks fails', async () => {
const warnSpy = vi.spyOn(console, 'warn').mockImplementation(() => {});
const { mockSetOnboardingCompletedFlag, mockSetOnboardingTasks } = await setupLayout();
mockSetOnboardingTasks.mockRejectedValueOnce(
new Error('Core RPC openhuman.app_state_snapshot timed out after 30000ms')
);
await act(async () => {
fireEvent.click(screen.getByTestId('complete-btn'));
});
expect(mockSetOnboardingCompletedFlag).toHaveBeenCalledWith(true);
expect(screen.getByTestId('home-page')).toBeInTheDocument();
warnSpy.mockRestore();
});
});