feat(realtime): implement SSE realtime notifications; publish events from resolvers; remove polling in chat/sidebar/supplies/warehouse and wire realtime refetch
This commit is contained in:
@ -7,6 +7,7 @@ import React, { useState } from 'react'
|
||||
import { Sidebar } from '@/components/dashboard/sidebar'
|
||||
import { GET_PENDING_SUPPLIES_COUNT } from '@/graphql/queries'
|
||||
import { useSidebar } from '@/hooks/useSidebar'
|
||||
import { useRealtime } from '@/hooks/useRealtime'
|
||||
|
||||
// Импорты компонентов подразделов
|
||||
import { FulfillmentConsumablesOrdersTab } from './fulfillment-supplies/fulfillment-consumables-orders-tab'
|
||||
@ -31,8 +32,7 @@ export function FulfillmentSuppliesDashboard() {
|
||||
const [activeThirdTab, setActiveThirdTab] = useState('new') // новые
|
||||
|
||||
// Загружаем данные о непринятых поставках
|
||||
const { data: pendingData, error: pendingError } = useQuery(GET_PENDING_SUPPLIES_COUNT, {
|
||||
pollInterval: 30000, // Обновляем каждые 30 секунд
|
||||
const { data: pendingData, error: pendingError, refetch: refetchPending } = useQuery(GET_PENDING_SUPPLIES_COUNT, {
|
||||
fetchPolicy: 'cache-first',
|
||||
errorPolicy: 'ignore',
|
||||
onError: (error) => {
|
||||
@ -40,6 +40,15 @@ export function FulfillmentSuppliesDashboard() {
|
||||
},
|
||||
})
|
||||
|
||||
// Realtime: обновление бейджа
|
||||
useRealtime({
|
||||
onEvent: (evt) => {
|
||||
if (evt.type === 'supply-order:new' || evt.type === 'supply-order:updated') {
|
||||
refetchPending()
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// Логируем ошибку для диагностики
|
||||
React.useEffect(() => {
|
||||
if (pendingError) {
|
||||
|
@ -7,6 +7,7 @@ import React, { useState, useEffect } from 'react'
|
||||
|
||||
import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'
|
||||
import { GET_PENDING_SUPPLIES_COUNT } from '@/graphql/queries'
|
||||
import { useRealtime } from '@/hooks/useRealtime'
|
||||
|
||||
// Импорты компонентов подкатегорий
|
||||
import { FulfillmentConsumablesOrdersTab } from './fulfillment-consumables-orders-tab'
|
||||
@ -33,8 +34,7 @@ export function FulfillmentSuppliesTab() {
|
||||
const [activeTab, setActiveTab] = useState('goods')
|
||||
|
||||
// Загружаем данные о непринятых поставках
|
||||
const { data: pendingData, error: pendingError } = useQuery(GET_PENDING_SUPPLIES_COUNT, {
|
||||
pollInterval: 30000, // Обновляем каждые 30 секунд
|
||||
const { data: pendingData, error: pendingError, refetch: refetchPending } = useQuery(GET_PENDING_SUPPLIES_COUNT, {
|
||||
fetchPolicy: 'cache-first',
|
||||
errorPolicy: 'ignore',
|
||||
onError: (error) => {
|
||||
@ -42,6 +42,15 @@ export function FulfillmentSuppliesTab() {
|
||||
},
|
||||
})
|
||||
|
||||
// Realtime: обновление счетчика
|
||||
useRealtime({
|
||||
onEvent: (evt) => {
|
||||
if (evt.type === 'supply-order:new' || evt.type === 'supply-order:updated') {
|
||||
refetchPending()
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
// Логируем ошибку для диагностики
|
||||
React.useEffect(() => {
|
||||
if (pendingError) {
|
||||
|
Reference in New Issue
Block a user