1- import { metaApi } from "$lib/api" ;
1+ import { metaApi } from '$lib/api' ;
2+ import { initializeSignalR } from '$lib/signalr' ;
3+ import { initializeDarkModeStore } from '$lib/stores/ColorSchemeStore.svelte' ;
4+ import { initializeSerialPortsStore } from '$lib/stores/SerialPortsStore' ;
5+ import { UserStore } from '$lib/stores/UserStore' ;
26
37export async function init ( ) {
4- const response = await metaApi . versionGetBackendVersion ( ) ;
5- if ( ! response . data ) throw new Error ( "Failed to fetch backend info" ) ;
6-
7- if ( response . data . version ) {
8- sessionStorage . setItem ( "backendVersion" , response . data . version ) ;
9- }
10- if ( response . data . commit ) {
11- sessionStorage . setItem ( "backendCommit" , response . data . commit ) ;
12- }
13- if ( response . data . shortLinkUrl ) {
14- sessionStorage . setItem ( "shortLinkUrl" , response . data . shortLinkUrl ) ;
15- }
16- if ( response . data . turnstileSiteKey ) {
17- sessionStorage . setItem ( "turnstileSiteKey" , response . data . turnstileSiteKey ) ;
18- }
19- }
8+ // fire both requests in parallel
9+ const [ backendInfoRes , userRes ] = await Promise . allSettled ( [
10+ metaApi . versionGetBackendVersion ( ) ,
11+ UserStore . refreshSelf ( ) ,
12+ ] ) ;
13+
14+ // handle backend info
15+ if ( backendInfoRes . status === 'fulfilled' && backendInfoRes . value ?. data ) {
16+ const { version, commit, shortLinkUrl, turnstileSiteKey } = backendInfoRes . value . data ;
17+
18+ if ( version != null ) sessionStorage . setItem ( 'backendVersion' , String ( version ) ) ;
19+ if ( commit != null ) sessionStorage . setItem ( 'backendCommit' , String ( commit ) ) ;
20+ if ( shortLinkUrl != null ) sessionStorage . setItem ( 'shortLinkUrl' , String ( shortLinkUrl ) ) ;
21+ if ( turnstileSiteKey != null )
22+ sessionStorage . setItem ( 'turnstileSiteKey' , String ( turnstileSiteKey ) ) ;
23+ } else {
24+ throw new Error ( 'Failed to fetch backend info' ) ;
25+ }
26+
27+ // init client-side stores
28+ initializeDarkModeStore ( ) ;
29+ initializeSerialPortsStore ( ) ; // TODO: move this elsewhere if needed
30+
31+ // start SignalR only if we have a user
32+ const isLoggedIn = userRes . status === 'fulfilled' && ! ! userRes . value ;
33+ if ( isLoggedIn ) {
34+ await initializeSignalR ( ) ;
35+ }
36+ }
0 commit comments