chenbhao commited on
Commit
1346fca
·
1 Parent(s): c53c7bc

fix: ai friend's picture localStorge

Browse files
assets/ai_friend.png ADDED

Git LFS Details

  • SHA256: a14a7dd6b14f9f3248027b6b106da09540ef022f361eeee6e088749425079702
  • Pointer size: 131 Bytes
  • Size of remote file: 975 kB
assets/desktop.png ADDED

Git LFS Details

  • SHA256: 3b9e32f3c20c5abd20b313fd5f62700217e1fab9f80c9edb8f970c44860604fc
  • Pointer size: 131 Bytes
  • Size of remote file: 132 kB
desktop/src/stores/companionStore.ts CHANGED
@@ -1,6 +1,29 @@
1
  import { create } from 'zustand'
2
  import type { CompanionStatus } from '../types/companion'
3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  interface CompanionStore {
5
  status: CompanionStatus
6
  serverUrl: string
@@ -44,8 +67,8 @@ export const useCompanionStore = create<CompanionStore>((set) => ({
44
  micEnabled: true,
45
  cameraEnabled: true,
46
  error: null,
47
- avatarUrl: null,
48
- backgroundUrl: null,
49
 
50
  setServerUrl: (url) => set({ serverUrl: url }),
51
  setVoiceName: (name) => set({ voiceName: name }),
@@ -60,8 +83,14 @@ export const useCompanionStore = create<CompanionStore>((set) => ({
60
  setMicEnabled: (enabled) => set({ micEnabled: enabled }),
61
  setCameraEnabled: (enabled) => set({ cameraEnabled: enabled }),
62
  setError: (error) => set({ error }),
63
- setAvatarUrl: (url) => set({ avatarUrl: url }),
64
- setBackgroundUrl: (url) => set({ backgroundUrl: url }),
 
 
 
 
 
 
65
  reset: () =>
66
  set({
67
  status: 'disconnected',
 
1
  import { create } from 'zustand'
2
  import type { CompanionStatus } from '../types/companion'
3
 
4
+ const AVATAR_KEY = 'companion-avatar-url'
5
+ const BACKGROUND_KEY = 'companion-background-url'
6
+
7
+ function loadPersisted(key: string): string | null {
8
+ try {
9
+ return localStorage.getItem(key)
10
+ } catch {
11
+ return null
12
+ }
13
+ }
14
+
15
+ function persist(key: string, value: string | null) {
16
+ try {
17
+ if (value === null) {
18
+ localStorage.removeItem(key)
19
+ } else {
20
+ localStorage.setItem(key, value)
21
+ }
22
+ } catch {
23
+ // localStorage may be full; silently ignore
24
+ }
25
+ }
26
+
27
  interface CompanionStore {
28
  status: CompanionStatus
29
  serverUrl: string
 
67
  micEnabled: true,
68
  cameraEnabled: true,
69
  error: null,
70
+ avatarUrl: loadPersisted(AVATAR_KEY),
71
+ backgroundUrl: loadPersisted(BACKGROUND_KEY),
72
 
73
  setServerUrl: (url) => set({ serverUrl: url }),
74
  setVoiceName: (name) => set({ voiceName: name }),
 
83
  setMicEnabled: (enabled) => set({ micEnabled: enabled }),
84
  setCameraEnabled: (enabled) => set({ cameraEnabled: enabled }),
85
  setError: (error) => set({ error }),
86
+ setAvatarUrl: (url) => {
87
+ persist(AVATAR_KEY, url)
88
+ set({ avatarUrl: url })
89
+ },
90
+ setBackgroundUrl: (url) => {
91
+ persist(BACKGROUND_KEY, url)
92
+ set({ backgroundUrl: url })
93
+ },
94
  reset: () =>
95
  set({
96
  status: 'disconnected',