this repo has no description
1<script lang="ts"> 2 import { getCurrentPath, navigate } from './lib/router.svelte' 3 import { initAuth, getAuthState } from './lib/auth.svelte' 4 import { initServerConfig } from './lib/serverConfig.svelte' 5 import { initI18n, _ } from './lib/i18n' 6 import { isLoading as i18nLoading } from 'svelte-i18n' 7 import Login from './routes/Login.svelte' 8 import Register from './routes/Register.svelte' 9 import RegisterPasskey from './routes/RegisterPasskey.svelte' 10 import Verify from './routes/Verify.svelte' 11 import ResetPassword from './routes/ResetPassword.svelte' 12 import RecoverPasskey from './routes/RecoverPasskey.svelte' 13 import RequestPasskeyRecovery from './routes/RequestPasskeyRecovery.svelte' 14 import Dashboard from './routes/Dashboard.svelte' 15 import AppPasswords from './routes/AppPasswords.svelte' 16 import InviteCodes from './routes/InviteCodes.svelte' 17 import Settings from './routes/Settings.svelte' 18 import Sessions from './routes/Sessions.svelte' 19 import Comms from './routes/Comms.svelte' 20 import RepoExplorer from './routes/RepoExplorer.svelte' 21 import Admin from './routes/Admin.svelte' 22 import OAuthConsent from './routes/OAuthConsent.svelte' 23 import OAuthLogin from './routes/OAuthLogin.svelte' 24 import OAuthAccounts from './routes/OAuthAccounts.svelte' 25 import OAuth2FA from './routes/OAuth2FA.svelte' 26 import OAuthTotp from './routes/OAuthTotp.svelte' 27 import OAuthPasskey from './routes/OAuthPasskey.svelte' 28 import OAuthDelegation from './routes/OAuthDelegation.svelte' 29 import OAuthError from './routes/OAuthError.svelte' 30 import Security from './routes/Security.svelte' 31 import TrustedDevices from './routes/TrustedDevices.svelte' 32 import Controllers from './routes/Controllers.svelte' 33 import DelegationAudit from './routes/DelegationAudit.svelte' 34 import ActAs from './routes/ActAs.svelte' 35 import Migration from './routes/Migration.svelte' 36 import DidDocumentEditor from './routes/DidDocumentEditor.svelte' 37 import Home from './routes/Home.svelte' 38 39 if (window.location.pathname === '/migrate') { 40 const newUrl = `${window.location.origin}/${window.location.search}#/migrate` 41 window.location.replace(newUrl) 42 } 43 44 initI18n() 45 46 const auth = getAuthState() 47 48 let oauthCallbackPending = $state(hasOAuthCallback()) 49 50 function hasOAuthCallback(): boolean { 51 if (window.location.hash === '#/migrate') { 52 return false 53 } 54 const params = new URLSearchParams(window.location.search) 55 return !!(params.get('code') && params.get('state')) 56 } 57 58 $effect(() => { 59 initServerConfig() 60 initAuth().then(({ oauthLoginCompleted }) => { 61 if (oauthLoginCompleted) { 62 navigate('/dashboard') 63 } 64 oauthCallbackPending = false 65 }) 66 }) 67 68 function getComponent(path: string) { 69 switch (path) { 70 case '/login': 71 return Login 72 case '/register': 73 return Register 74 case '/register-passkey': 75 return RegisterPasskey 76 case '/verify': 77 return Verify 78 case '/reset-password': 79 return ResetPassword 80 case '/recover-passkey': 81 return RecoverPasskey 82 case '/request-passkey-recovery': 83 return RequestPasskeyRecovery 84 case '/dashboard': 85 return Dashboard 86 case '/app-passwords': 87 return AppPasswords 88 case '/invite-codes': 89 return InviteCodes 90 case '/settings': 91 return Settings 92 case '/sessions': 93 return Sessions 94 case '/comms': 95 return Comms 96 case '/repo': 97 return RepoExplorer 98 case '/admin': 99 return Admin 100 case '/oauth/consent': 101 return OAuthConsent 102 case '/oauth/login': 103 return OAuthLogin 104 case '/oauth/accounts': 105 return OAuthAccounts 106 case '/oauth/2fa': 107 return OAuth2FA 108 case '/oauth/totp': 109 return OAuthTotp 110 case '/oauth/passkey': 111 return OAuthPasskey 112 case '/oauth/delegation': 113 return OAuthDelegation 114 case '/oauth/error': 115 return OAuthError 116 case '/security': 117 return Security 118 case '/trusted-devices': 119 return TrustedDevices 120 case '/controllers': 121 return Controllers 122 case '/delegation-audit': 123 return DelegationAudit 124 case '/act-as': 125 return ActAs 126 case '/migrate': 127 return Migration 128 case '/did-document': 129 return DidDocumentEditor 130 default: 131 return Home 132 } 133 } 134 135 let currentPath = $derived(getCurrentPath()) 136 let CurrentComponent = $derived(getComponent(currentPath)) 137</script> 138 139<main> 140 {#if auth.loading || $i18nLoading || oauthCallbackPending} 141 <div class="loading"> 142 <p>Loading...</p> 143 </div> 144 {:else} 145 <CurrentComponent /> 146 {/if} 147</main> 148 149<style> 150 main { 151 min-height: 100vh; 152 } 153 154 .loading { 155 display: flex; 156 align-items: center; 157 justify-content: center; 158 min-height: 100vh; 159 color: var(--text-secondary); 160 } 161</style>