11import { resolve } from '$app/paths' ;
2- import type { Session , FormValues } from './types' ;
2+ import type { Session , FormValues , Network } from './types' ;
3+
4+ const NETWORK_ALIASES : Record < string , Network > = {
5+ mainnet : 'Mainnet' ,
6+ main : 'Mainnet' ,
7+ mainet : 'Mainnet' ,
8+ testnet : 'Testnet' ,
9+ test : 'Testnet' ,
10+ } ;
311
412// Encode session to URL-safe base64 for sharing
513export function encodeSession ( session : Session ) : string {
@@ -13,7 +21,11 @@ export function decodeSession(encoded: string): Session | null {
1321 try {
1422 const bytes = Uint8Array . from ( atob ( encoded ) , ( c ) => c . charCodeAt ( 0 ) ) ;
1523 const json = new TextDecoder ( ) . decode ( bytes ) ;
16- return JSON . parse ( json ) as Session ;
24+ const session = JSON . parse ( json ) as Session ;
25+ return {
26+ ...session ,
27+ network : parseNetwork ( session . network ) ,
28+ } ;
1729 } catch {
1830 return null ;
1931 }
@@ -52,8 +64,20 @@ export function sessionToFormValues(session: Session): FormValues {
5264 return {
5365 actionType : session . actionType ,
5466 multisigAddress : session . multisigAddress ,
55- network : session . network ,
67+ network : parseNetwork ( session . network ) ,
5668 vaultAddress : session . vaultAddress ,
5769 fields,
5870 } ;
5971}
72+
73+ function parseNetwork ( value : unknown ) : Network {
74+ if ( typeof value !== 'string' ) {
75+ throw new Error ( `Invalid network in shared session: ${ String ( value ) } ` ) ;
76+ }
77+
78+ const network = NETWORK_ALIASES [ value . trim ( ) . toLowerCase ( ) ] ;
79+ if ( ! network ) {
80+ throw new Error ( `Invalid network in shared session: ${ value } ` ) ;
81+ }
82+ return network ;
83+ }
0 commit comments