Methods

(static) beginLogin() → {object}

Cold-start (and session-reset) fast path. Runs the saved-server resolution + saved- token validation WITHOUT showing any interactive UI, and returns a decision telling main.bs which route to bring the router up on (or that we are already logged in). Mirrors LoginFlow()'s startLogin: server block + the saved-active-user branch.

Returns:
Type: 
object

(static) buildPublicUserList() → {object}

Build the public + saved user list for the picker. Public users from the server, plus saved users for this server id not already in the public list. Mirrors LoginFlow 60-104. Returns an array of PublicUserData nodes.

Returns:
Type: 
object

(static) enterDecision(decision) → {void}

Bring the router up on (or navigate it to) the route the decision names. Shared by cold start, session reset, and the post-server-connect step.

Parameters:
NameTypeDescription
decisionobject
Returns:
Type: 
void

(static) finishLogin() → {void}

Login complete — run the post-login bootstrap (per-user font processing) and bring up Home. loadHomeScreen()/createAndShowHomeGroup() (main.bs) navigate the router to "/", deferring until font download completes when UI fallback fonts are enabled.

Returns:
Type: 
void

(static) handlePreLoginIntent(action) → {void}


Intent dispatch — called from main.bs's event loop when a pre-login view sets m.scene.preLoginIntent. The payload is read off the active routed view.

Parameters:
NameTypeDescription
actionstring
Returns:
Type: 
void

(static) onCredentialsSubmitted() → {void}

Credentials submitted from LoginScene. Mirrors CreateSigninGroup's submit handler.

Returns:
Type: 
void

(static) onLoginBack() → {void}

Back from LoginScene. Mirrors CreateSigninGroup back (showScenes 170-178): return to the user picker if there were public users, otherwise drop back to server select.

Returns:
Type: 
void

(static) onQuickConnectDialogClosed() → {void}

Release the Quick Connect dialog observer once it has signalled success or been cancelled. The dialog closed itself (close=true); we just drop our reference + observers.

Returns:
Type: 
void

(static) onQuickConnectRequested() → {void}

Quick Connect button pressed in UserSelect. initQuickConnect() is sync HTTP, so it runs here on the main thread (not in the render-thread view). On success, create the self-contained QuickConnectDialog (it polls + authenticates + prompts to save creds on the render thread) and show it; it sets isAuthenticated=true on success, which the main loop turns into the quickConnectComplete intent. Mirrors CreateUserSelectGroup 471-491.

Returns:
Type: 
void

(static) onServerSubmitted() → {void}

Server URL submitted from SetServerScreen. Mirrors CreateServerGroup's submit handler.

Returns:
Type: 
void

(static) onUserBack() → {void}

Back from UserSelect → change server. Mirrors LoginFlow 114-119.

Returns:
Type: 
void

(static) onUserSelected() → {void}

A public/saved user was picked in UserSelect. Mirrors LoginFlow 120-163.

Returns:
Type: 
void

(static) reenterLogin() → {void}

Enter (or re-enter) the login flow. Called at cold start AND on every session reset (Change Server / User / Sign Out). Re-resolves the pre-login locale first — without this, a changed global sign-in language would only apply after a full app restart, and the sign-in screens would render in the just-signed-out user's language rather than the device-wide default (isPostLogin defaults false → pre-login cascade).

Returns:
Type: 
void

(static) resolveUser() → {object}

Decide the user step given a valid server. Returns one of: { status: "success" } — already authenticated (fast path) { status: "users", users: [...] } — show the user picker { status: "login", username: "" } — go straight to manual sign-in enterDecision maps each status to its route; the decision carries only payload. Mirrors LoginFlow()'s user section (active-user branch + no-active-user branch).

Returns:
Type: 
object

(static) routerNav(routePath, context, clearSpinneropt) → {void}

Thin main-thread → render-thread navigation bridge. clearSpinner (login paths only) keeps a blocking login spinner up across the async nav and clears it when the destination view mounts — see JRScene.navigateThenFocus.

Parameters:
NameTypeAttributesDefaultDescription
routePathstring
contextobject
clearSpinnerboolean<optional>
false
Returns:
Type: 
void

(static) validateSavedToken(localUser, token) → {boolean}

Validate a saved auth token: set it on the local user and verify it with AboutMe(). On success, logs the user in (user.Login) and returns true. On failure returns false — the caller owns the cleanup/fallback, which diverges between the two call sites (cold start unsets active_user + recurses; the user picker falls through to a no-password login). Shared by resolveUser (cold start) and onUserSelected (user picker).

Parameters:
NameTypeDescription
localUserobject
tokenstring
Returns:
Type: 
boolean