lobe-chat

Форк
0
/
localStorage.ts 
38 строк · 1.1 Кб
1
const PREV_KEY = 'LOBE_GLOBAL';
2

3
// LOBE_PREFERENCE for userStore
4
// LOBE_GLOBAL_PREFERENCE for globalStore
5
type StorageKey = 'LOBE_PREFERENCE' | 'LOBE_SYSTEM_STATUS';
6

7
export class AsyncLocalStorage<State> {
8
  private storageKey: StorageKey;
9

10
  constructor(storageKey: StorageKey) {
11
    this.storageKey = storageKey;
12

13
    // skip server side rendering
14
    if (typeof window === 'undefined') return;
15

16
    // migrate old data
17
    if (localStorage.getItem(PREV_KEY)) {
18
      const data = JSON.parse(localStorage.getItem(PREV_KEY) || '{}');
19

20
      const preference = data.state.preference;
21

22
      if (data.state?.preference) {
23
        localStorage.setItem('LOBE_PREFERENCE', JSON.stringify(preference));
24
      }
25
      localStorage.removeItem(PREV_KEY);
26
    }
27
  }
28

29
  async saveToLocalStorage(state: object) {
30
    const data = await this.getFromLocalStorage();
31

32
    localStorage.setItem(this.storageKey, JSON.stringify({ ...data, ...state }));
33
  }
34

35
  async getFromLocalStorage(key: StorageKey = this.storageKey): Promise<State> {
36
    return JSON.parse(localStorage.getItem(key) || '{}');
37
  }
38
}
39

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.