unreadMessagesStore.ts 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. import { fetchUnreadMessagesCount } from '@api/chat';
  2. import { storage, StoreType } from 'src/storage';
  3. import { create } from 'zustand';
  4. interface MessagesState {
  5. unreadMessagesCount: number;
  6. setUnreadMessagesCount: (count: number) => void;
  7. updateUnreadMessagesCount: () => Promise<void>;
  8. }
  9. export const useMessagesStore = create<MessagesState>((set) => ({
  10. unreadMessagesCount: (storage.get('unreadMessagesCount', StoreType.NUMBER) as number) ?? 0,
  11. setUnreadMessagesCount: (count: number) => set({ unreadMessagesCount: count }),
  12. updateUnreadMessagesCount: async () => {
  13. const token = storage.get('token', StoreType.STRING);
  14. if (token) {
  15. try {
  16. const messagesData = await fetchUnreadMessagesCount(token as string);
  17. if (messagesData && typeof messagesData.unread_conversations !== 'undefined') {
  18. set({ unreadMessagesCount: messagesData.unread_conversations });
  19. storage.set('unreadMessagesCount', messagesData.unread_conversations);
  20. }
  21. } catch (error) {
  22. console.error('Failed to fetch unread conversations count', error);
  23. }
  24. } else {
  25. set({ unreadMessagesCount: 0 });
  26. storage.set('unreadMessagesCount', 0);
  27. }
  28. }
  29. }));