Обновлены компоненты мессенджера: изменен интервал обновления списка чатов на 1 минуту и изменена политика выборки на 'cache-first' для повышения стабильности. В компоненте MessengerChat добавлена поддержка вложений и улучшена логика отметки сообщений как прочитанных с плавным обновлением. В компоненте MessengerConversations улучшено отображение загрузки и индикаторов непрочитанных сообщений. Также добавлен автофокус на поле ввода при открытии чата.
This commit is contained in:
@ -7,7 +7,7 @@ import { Button } from '@/components/ui/button'
|
||||
import { Sidebar } from '@/components/dashboard/sidebar'
|
||||
import { useSidebar } from '@/hooks/useSidebar'
|
||||
import { MessengerConversations } from './messenger-conversations'
|
||||
import { MessengerChat } from './messenger-chat'
|
||||
import { MessengerChatWithAttachments } from './messenger-chat-with-attachments'
|
||||
import { MessengerEmptyState } from './messenger-empty-state'
|
||||
import { GET_CONVERSATIONS, GET_MY_COUNTERPARTIES } from '@/graphql/queries'
|
||||
import { Panel, PanelGroup, PanelResizeHandle } from 'react-resizable-panels'
|
||||
@ -47,8 +47,9 @@ export function MessengerDashboard() {
|
||||
|
||||
// Загружаем список чатов (conversations) для отображения непрочитанных сообщений
|
||||
const { data: conversationsData, loading: conversationsLoading, refetch: refetchConversations } = useQuery(GET_CONVERSATIONS, {
|
||||
pollInterval: 5000, // Обновляем каждые 5 секунд для получения новых непрочитанных сообщений
|
||||
fetchPolicy: 'cache-and-network',
|
||||
pollInterval: 30000, // Обновляем каждые 30 секунд - реже, но достаточно
|
||||
fetchPolicy: 'cache-first', // Приоритет кэшу для стабильности
|
||||
notifyOnNetworkStatusChange: false, // Не показываем загрузку при фоновых обновлениях
|
||||
})
|
||||
|
||||
// Также загружаем полный список контрагентов на случай, если с кем-то еще не общались
|
||||
@ -121,7 +122,10 @@ export function MessengerDashboard() {
|
||||
<Panel defaultSize={70} className="pl-2">
|
||||
<Card className="glass-card h-full overflow-hidden">
|
||||
{selectedCounterparty && selectedCounterpartyData ? (
|
||||
<MessengerChat counterparty={selectedCounterpartyData} />
|
||||
<MessengerChatWithAttachments
|
||||
counterparty={selectedCounterpartyData}
|
||||
onMessagesRead={refetchConversations}
|
||||
/>
|
||||
) : (
|
||||
<div className="flex items-center justify-center h-full">
|
||||
<div className="text-center">
|
||||
|
Reference in New Issue
Block a user