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 initI18n() 40 41 const auth = getAuthState() 42 43 let oauthCallbackPending = $state(hasOAuthCallback()) 44 45 function hasOAuthCallback(): boolean { 46 const params = new URLSearchParams(window.location.search) 47 return !!(params.get('code') && params.get('state')) 48 } 49 50 $effect(() => { 51 initServerConfig() 52 initAuth().then(({ oauthLoginCompleted }) => { 53 if (oauthLoginCompleted) { 54 navigate('/dashboard') 55 } 56 oauthCallbackPending = false 57 }) 58 }) 59 60 function getComponent(path: string) { 61 switch (path) { 62 case '/login': 63 return Login 64 case '/register': 65 return Register 66 case '/register-passkey': 67 return RegisterPasskey 68 case '/verify': 69 return Verify 70 case '/reset-password': 71 return ResetPassword 72 case '/recover-passkey': 73 return RecoverPasskey 74 case '/request-passkey-recovery': 75 return RequestPasskeyRecovery 76 case '/dashboard': 77 return Dashboard 78 case '/app-passwords': 79 return AppPasswords 80 case '/invite-codes': 81 return InviteCodes 82 case '/settings': 83 return Settings 84 case '/sessions': 85 return Sessions 86 case '/comms': 87 return Comms 88 case '/repo': 89 return RepoExplorer 90 case '/admin': 91 return Admin 92 case '/oauth/consent': 93 return OAuthConsent 94 case '/oauth/login': 95 return OAuthLogin 96 case '/oauth/accounts': 97 return OAuthAccounts 98 case '/oauth/2fa': 99 return OAuth2FA 100 case '/oauth/totp': 101 return OAuthTotp 102 case '/oauth/passkey': 103 return OAuthPasskey 104 case '/oauth/delegation': 105 return OAuthDelegation 106 case '/oauth/error': 107 return OAuthError 108 case '/security': 109 return Security 110 case '/trusted-devices': 111 return TrustedDevices 112 case '/controllers': 113 return Controllers 114 case '/delegation-audit': 115 return DelegationAudit 116 case '/act-as': 117 return ActAs 118 case '/migrate': 119 return Migration 120 case '/did-document': 121 return DidDocumentEditor 122 default: 123 return Home 124 } 125 } 126 127 let currentPath = $derived(getCurrentPath()) 128 let CurrentComponent = $derived(getComponent(currentPath)) 129</script> 130 131<main> 132 {#if auth.loading || $i18nLoading || oauthCallbackPending} 133 <div class="loading"> 134 <p>Loading...</p> 135 </div> 136 {:else} 137 <CurrentComponent /> 138 {/if} 139</main> 140 141<style> 142 main { 143 min-height: 100vh; 144 } 145 146 .loading { 147 display: flex; 148 align-items: center; 149 justify-content: center; 150 min-height: 100vh; 151 color: var(--text-secondary); 152 } 153</style>