|
99 | 99 |
|
100 | 100 | export let chatIdProp = ''; |
101 | 101 |
|
| 102 | + const SELECTED_MODELS_STORAGE_KEY = 'kael:selected-models'; |
| 103 | +
|
102 | 104 | let loading = true; |
103 | 105 |
|
104 | 106 | const eventTarget = new EventTarget(); |
|
238 | 240 | console.log('saveSessionSelectedModels', selectedModels, sessionStorage.selectedModels); |
239 | 241 | }; |
240 | 242 |
|
| 243 | + const saveLocalSelectedModels = () => { |
| 244 | + const validSelection = selectedModels.filter((modelId) => modelId); |
| 245 | +
|
| 246 | + if (validSelection.length === 0) { |
| 247 | + localStorage.removeItem(SELECTED_MODELS_STORAGE_KEY); |
| 248 | + return; |
| 249 | + } |
| 250 | +
|
| 251 | + const selectionString = JSON.stringify(validSelection); |
| 252 | + if (localStorage.getItem(SELECTED_MODELS_STORAGE_KEY) === selectionString) { |
| 253 | + return; |
| 254 | + } |
| 255 | +
|
| 256 | + localStorage.setItem(SELECTED_MODELS_STORAGE_KEY, selectionString); |
| 257 | + }; |
| 258 | +
|
241 | 259 | let oldSelectedModelIds = ['']; |
242 | 260 | $: if (JSON.stringify(selectedModelIds) !== JSON.stringify(oldSelectedModelIds)) { |
243 | 261 | onSelectedModelIdsChange(); |
244 | 262 | } |
245 | 263 |
|
| 264 | + $: if (selectedModels) { |
| 265 | + saveLocalSelectedModels(); |
| 266 | + } |
| 267 | +
|
246 | 268 | const onSelectedModelIdsChange = () => { |
247 | 269 | if (oldSelectedModelIds.filter((id) => id).length > 0) { |
248 | 270 | resetInput(); |
|
954 | 976 | if (sessionStorage.selectedModels) { |
955 | 977 | selectedModels = JSON.parse(sessionStorage.selectedModels); |
956 | 978 | sessionStorage.removeItem('selectedModels'); |
| 979 | + } else if (localStorage.getItem(SELECTED_MODELS_STORAGE_KEY)) { |
| 980 | + try { |
| 981 | + const localSelectedModels = JSON.parse( |
| 982 | + localStorage.getItem(SELECTED_MODELS_STORAGE_KEY) ?? '[]' |
| 983 | + ); |
| 984 | +
|
| 985 | + if (Array.isArray(localSelectedModels)) { |
| 986 | + selectedModels = localSelectedModels; |
| 987 | + } |
| 988 | + } catch (error) { |
| 989 | + console.error('Failed to parse stored models from localStorage', error); |
| 990 | + } |
957 | 991 | } else { |
958 | 992 | if ($settings?.models) { |
959 | 993 | selectedModels = $settings?.models; |
|
0 commit comments