mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-11-14 08:11:03 +00:00
fix(native): the app's browser sign-in no longer lands on the dashboard when the browser still holds an older TREK
A browser that ran TREK before 5.1.1 keeps that version's app in its service worker. When the app opened /native-handoff, the worker answered it from its cache with an app that has no such page, which sent the user to /, and the sign-in ended on the dashboard in the browser instead of in the app. The app now opens /api/auth/native/start, which every TREK service worker passes to the server. That page takes the workers off the browser and forwards to the handoff page. Until the sign-in is handed back, the web app registers no service worker and does not reload for a new version: a tab still open on the older TREK keeps its worker alive, and a registration or a reload in the middle of the sign-in brought it back to answer the next page.
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { afterEach, describe, expect, it } from 'vitest';
|
||||
import { BROWSER_SIGN_IN_KEY, BROWSER_SIGN_IN_TTL_MS, browserSignInRunning, endBrowserSignIn } from './browserSignInFlag';
|
||||
|
||||
afterEach(() => localStorage.clear());
|
||||
|
||||
describe('browserSignInRunning', () => {
|
||||
it('FE-NATIVE-SIGNINFLAG-001: counts a mark from public/native-handoff.js for as long as a sign-in may take', () => {
|
||||
const now = 1_000_000_000;
|
||||
expect(browserSignInRunning(now)).toBe(false);
|
||||
|
||||
localStorage.setItem(BROWSER_SIGN_IN_KEY, String(now - 1000));
|
||||
expect(browserSignInRunning(now)).toBe(true);
|
||||
|
||||
localStorage.setItem(BROWSER_SIGN_IN_KEY, String(now - BROWSER_SIGN_IN_TTL_MS));
|
||||
expect(browserSignInRunning(now)).toBe(false);
|
||||
// A clock set back, or anything that is no time at all.
|
||||
localStorage.setItem(BROWSER_SIGN_IN_KEY, String(now + 60_000));
|
||||
expect(browserSignInRunning(now)).toBe(false);
|
||||
localStorage.setItem(BROWSER_SIGN_IN_KEY, 'soon');
|
||||
expect(browserSignInRunning(now)).toBe(false);
|
||||
});
|
||||
|
||||
it('FE-NATIVE-SIGNINFLAG-002: ends with the hand-back to the app', () => {
|
||||
localStorage.setItem(BROWSER_SIGN_IN_KEY, String(Date.now()));
|
||||
endBrowserSignIn();
|
||||
expect(localStorage.getItem(BROWSER_SIGN_IN_KEY)).toBeNull();
|
||||
expect(browserSignInRunning()).toBe(false);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user