Session
+none
+diff --git a/README.md b/README.md index 361cf4f..1ec71d2 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ Top-level control surface: 2. `Activate membership` 3. `Refresh status + feed` 4. `Governance status` -5. Wallet/membership/designation/last-sync overview cards +5. Wallet/session/membership/designation/last-sync overview cards 6. Pull-first updates feed + support ticket action 7. Identity assurance visibility (`none` / `crypto_direct_unattested` / `sponsored_unattested` / `onramp_attested`) diff --git a/app/app.js b/app/app.js index b01b40f..c292e33 100644 --- a/app/app.js +++ b/app/app.js @@ -55,6 +55,16 @@ function isOnrampAttested(value) { return normalizeAssurance(value) === "onramp_attested"; } +function sessionSummary() { + if (!state.walletSessionToken) { + return "none"; + } + if (!state.walletSessionExpiresAt) { + return "active"; + } + return `active (exp ${state.walletSessionExpiresAt})`; +} + function injectedProvider() { return globalThis.ethereum || null; } @@ -105,6 +115,7 @@ function refreshActionLocks(statusPayload) { function refreshOverview(statusPayload) { const currentWallet = wallet(); setSummary("summaryWallet", currentWallet || "not connected"); + setSummary("summarySession", sessionSummary()); if (statusPayload && typeof statusPayload === "object") { setSummary("summaryMembership", statusPayload.status || "unknown"); setSummary("summaryDesignation", statusPayload.designation_code || "-"); diff --git a/app/index.html b/app/index.html index a6445d9..53b85f8 100644 --- a/app/index.html +++ b/app/index.html @@ -27,6 +27,10 @@
not connected
+none
+unknown