Skip to content

Commit 15a59b1

Browse files
committed
rehydrate nickname states
1 parent 719b819 commit 15a59b1

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

src/states/settings.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { emit, listen } from "@tauri-apps/api/event";
2+
import { appWindow } from "@tauri-apps/api/window";
13
import { create } from "zustand";
24
import { createJSONStorage, persist } from "zustand/middleware";
35
import { 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+
1621
const 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+
3451
export { useSettings };
3552

0 commit comments

Comments
 (0)