1+ import { emit , listen } from "@tauri-apps/api/event" ;
2+ import { appWindow } from "@tauri-apps/api/window" ;
13import { create } from "zustand" ;
24import { createJSONStorage , persist } from "zustand/middleware" ;
35import { stateStorage } from "../utils/stateStorage" ;
@@ -13,14 +15,21 @@ interface SettingsPersistentState {
1315 setSampVersion : ( version : SAMPDLLVersions ) => void ;
1416}
1517
18+ const emitWithDelay = ( event : string , payload : any ) =>
19+ setTimeout ( ( ) => emit ( event , payload ) , 200 ) ;
20+
1621const useSettings = create < SettingsPersistentState > ( ) (
1722 persist (
1823 ( set ) => ( {
1924 nickName : "" ,
2025 gtasaPath : "" ,
2126 sampVersion : "custom" ,
2227 dataMerged : false ,
23- setNickName : ( name ) => set ( { nickName : name } ) ,
28+ setNickName : ( name ) =>
29+ set ( ( ) => {
30+ emitWithDelay ( "setNickName" , name ) ;
31+ return { nickName : name } ;
32+ } ) ,
2433 setGTASAPath : ( path ) => set ( { gtasaPath : path } ) ,
2534 setSampVersion : ( version ) => set ( { sampVersion : version } ) ,
2635 } ) ,
@@ -31,5 +40,13 @@ const useSettings = create<SettingsPersistentState>()(
3140 )
3241) ;
3342
43+ [ "setNickName" ] . forEach ( ( event ) =>
44+ listen ( event , ( ev ) => {
45+ if ( ev . windowLabel !== appWindow . label ) {
46+ useSettings . persist . rehydrate ( ) ;
47+ }
48+ } )
49+ ) ;
50+
3451export { useSettings } ;
3552
0 commit comments