( capabilities?: ServerCapabilities | null )
| 2635 | } |
| 2636 | |
| 2637 | async function ensureWebServerSession( |
| 2638 | capabilities?: ServerCapabilities | null |
| 2639 | ): Promise<boolean> { |
| 2640 | if (window.zen.getAppInfo().runtime !== 'web') return true |
| 2641 | |
| 2642 | const serverCapabilities = capabilities ?? (await window.zen.getServerCapabilities()) |
| 2643 | if (!serverCapabilities?.authRequired || !serverCapabilities.supportsSessionLogin) { |
| 2644 | return true |
| 2645 | } |
| 2646 | |
| 2647 | const session = await window.zen.getServerSession() |
| 2648 | if (session.authenticated) return true |
| 2649 | |
| 2650 | const token = await promptApp({ |
| 2651 | title: 'Server Auth Token', |
| 2652 | description: |
| 2653 | 'This ZenNotes server requires its auth token before notes can be accessed in the browser.', |
| 2654 | placeholder: 'Enter the server auth token', |
| 2655 | okLabel: 'Sign In' |
| 2656 | }) |
| 2657 | if (!token?.trim()) return false |
| 2658 | |
| 2659 | await window.zen.loginServerSession(token.trim()) |
| 2660 | return true |
| 2661 | } |
| 2662 | |
| 2663 | function describeWebServerSetupError(err: unknown): string { |
| 2664 | const message = err instanceof Error ? err.message : String(err) |
no test coverage detected