lobe-chat

Форк
0
/
useSyncData.ts 
50 строк · 1.3 Кб
1
import { useCallback } from 'react';
2

3
import { useChatStore } from '@/store/chat';
4
import { featureFlagsSelectors, useServerConfigStore } from '@/store/serverConfig';
5
import { useSessionStore } from '@/store/session';
6
import { useUserStore } from '@/store/user';
7
import { syncSettingsSelectors, userProfileSelectors } from '@/store/user/selectors';
8

9
export const useSyncEvent = () => {
10
  const [refreshMessages, refreshTopic] = useChatStore((s) => [s.refreshMessages, s.refreshTopic]);
11
  const [refreshSessions] = useSessionStore((s) => [s.refreshSessions]);
12

13
  return useCallback((tableKey: string) => {
14
    // console.log('triggerSync Event:', tableKey);
15

16
    switch (tableKey) {
17
      case 'messages': {
18
        refreshMessages();
19
        break;
20
      }
21

22
      case 'topics': {
23
        refreshTopic();
24
        break;
25
      }
26

27
      case 'sessions': {
28
        refreshSessions();
29
        break;
30
      }
31

32
      default: {
33
        break;
34
      }
35
    }
36
  }, []);
37
};
38

39
export const useEnabledDataSync = () => {
40
  const [userId, userEnableSync, useEnabledSync] = useUserStore((s) => [
41
    userProfileSelectors.userId(s),
42
    syncSettingsSelectors.enableWebRTC(s),
43
    s.useEnabledSync,
44
  ]);
45

46
  const { enableWebrtc } = useServerConfigStore(featureFlagsSelectors);
47
  const syncEvent = useSyncEvent();
48

49
  useEnabledSync(enableWebrtc, { onEvent: syncEvent, userEnableSync, userId });
50
};
51

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

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

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

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