Launcher window: say "Not signed in on this PC" under Launch, with Sign in
The dev drive on another PC still had no live aircraft after that PC's launcher went live: its API log kept saying "the DHP answered, but this PC has no DHP sign-in yet", and launcher.json was never rewritten, i.e. no sign-in ever completed there. Root cause is the window, not the operator: the action panel offers Sign in only when nothing is installed, an update is due, or no operator is remembered (actionFor). The operator is remembered IN launcher.json, which travels with the drive, while the sign-in lives in that PC's Credential Manager - so a drive on a new PC shows Launch as if nothing were missing, and Sign in sits in Settings > Account where nothing points to it. Under Launch, while online and not signed in, the panel now says ODIAN will run on this PC's own data without live aircraft, with a Sign in link. Launch stays the button: a sign-in that cannot complete must not stop ODIAN. New mock scenario `new-pc` (online, installed, operator remembered, no sign-in). Spot-check: npm run dev -> ?scenario=new-pc shows the line; its Sign in link runs the sign-in and the line goes, the status bar then reading "Signed in as". svelte-check: 0 errors.
This commit is contained in:
@@ -223,6 +223,20 @@
|
|||||||
Offline: ODIAN <strong>{s?.installed}</strong> runs on local data and map tiles.
|
Offline: ODIAN <strong>{s?.installed}</strong> runs on local data and map tiles.
|
||||||
{/if}
|
{/if}
|
||||||
</p>
|
</p>
|
||||||
|
{#if s?.online && !s.signed_in && !checking}
|
||||||
|
<!-- The operator is remembered with the install (launcher.json travels with a drive),
|
||||||
|
the DHP sign-in is not (Credential Manager, per PC). So a drive on another PC offers
|
||||||
|
Launch as if nothing were missing, and ODIAN then runs on that PC's own data: no live
|
||||||
|
aircraft, no tiles from the site. Launch stays the button - a sign-in that cannot
|
||||||
|
complete must not stop ODIAN - but the gap is said here, with the way out. -->
|
||||||
|
<p class="secondary attention">
|
||||||
|
<Icon name="alert" size={14} />
|
||||||
|
<span>
|
||||||
|
Not signed in on this PC: ODIAN will run on this PC's own data, without live aircraft.
|
||||||
|
<button class="btn-link" disabled={blocked} onclick={() => launcher.signIn()}>Sign in</button>
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
{/if}
|
||||||
{#if launcher.syncAttention > 0}
|
{#if launcher.syncAttention > 0}
|
||||||
<p class="secondary attention">
|
<p class="secondary attention">
|
||||||
<Icon name="alert" size={14} />
|
<Icon name="alert" size={14} />
|
||||||
|
|||||||
+6
-1
@@ -1,7 +1,7 @@
|
|||||||
// Browser-only stand-in for the Rust backend, so the hub can be designed with
|
// Browser-only stand-in for the Rust backend, so the hub can be designed with
|
||||||
// `npm run dev`. Same shapes as docs/CONTRACT.md, driven by timers.
|
// `npm run dev`. Same shapes as docs/CONTRACT.md, driven by timers.
|
||||||
//
|
//
|
||||||
// ?scenario=first-run | update-required | ready | offline-installed |
|
// ?scenario=first-run | update-required | ready | new-pc | offline-installed |
|
||||||
// offline-not-installed | installing | running | sync-conflicts | error |
|
// offline-not-installed | installing | running | sync-conflicts | error |
|
||||||
// dev (a licensed developer PC: the Dev section of Settings appears)
|
// dev (a licensed developer PC: the Dev section of Settings appears)
|
||||||
// &fail=sign_in | install | restore | launch | notes make that flow fail
|
// &fail=sign_in | install | restore | launch | notes make that flow fail
|
||||||
@@ -259,6 +259,11 @@ function initialStatus(scenario: MockScenario): Status {
|
|||||||
case "ready":
|
case "ready":
|
||||||
Object.assign(s, { installed: CURRENT, operator: OPERATOR, signed_in: true });
|
Object.assign(s, { installed: CURRENT, operator: OPERATOR, signed_in: true });
|
||||||
break;
|
break;
|
||||||
|
case "new-pc":
|
||||||
|
// A drive on a PC it has never been on: the install and its operator came with it,
|
||||||
|
// the DHP sign-in (per PC) did not. Online, launchable, and not signed in.
|
||||||
|
Object.assign(s, { installed: CURRENT, operator: OPERATOR, signed_in: false });
|
||||||
|
break;
|
||||||
case "offline-installed":
|
case "offline-installed":
|
||||||
Object.assign(s, { online: false, installed: PREVIOUS, operator: OPERATOR });
|
Object.assign(s, { online: false, installed: PREVIOUS, operator: OPERATOR });
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -292,6 +292,7 @@ export const MOCK_SCENARIOS = [
|
|||||||
"first-run",
|
"first-run",
|
||||||
"update-required",
|
"update-required",
|
||||||
"ready",
|
"ready",
|
||||||
|
"new-pc",
|
||||||
"offline-installed",
|
"offline-installed",
|
||||||
"offline-not-installed",
|
"offline-not-installed",
|
||||||
"installing",
|
"installing",
|
||||||
|
|||||||
Reference in New Issue
Block a user