Fix: disabel document fecting in backup

- Replace useTabVisibility with useSettingsStore
- Remove unused initialLoadRef
- Simplify document fetching logic
This commit is contained in:
yangdx
2025-03-19 21:36:30 +08:00
parent 32dcbec7b5
commit bb7074d793

View File

@@ -1,6 +1,6 @@
import { useState, useEffect, useCallback, useRef } from 'react' import { useState, useEffect, useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useTabVisibility } from '@/contexts/useTabVisibility' import { useSettingsStore } from '@/stores/settings'
import Button from '@/components/ui/Button' import Button from '@/components/ui/Button'
import { import {
Table, Table,
@@ -27,9 +27,7 @@ export default function DocumentManager() {
const { t } = useTranslation() const { t } = useTranslation()
const health = useBackendState.use.health() const health = useBackendState.use.health()
const [docs, setDocs] = useState<DocsStatusesResponse | null>(null) const [docs, setDocs] = useState<DocsStatusesResponse | null>(null)
const { isTabVisible } = useTabVisibility() const currentTab = useSettingsStore.use.currentTab()
const isDocumentsTabVisible = isTabVisible('documents')
const initialLoadRef = useRef(false)
const fetchDocuments = useCallback(async () => { const fetchDocuments = useCallback(async () => {
try { try {
@@ -53,13 +51,12 @@ export default function DocumentManager() {
} }
}, [setDocs, t]) }, [setDocs, t])
// Only fetch documents when the tab becomes visible for the first time // Fetch documents when the tab becomes visible
useEffect(() => { useEffect(() => {
if (isDocumentsTabVisible && !initialLoadRef.current) { if (currentTab === 'documents') {
fetchDocuments() fetchDocuments()
initialLoadRef.current = true
} }
}, [isDocumentsTabVisible, fetchDocuments]) }, [currentTab, fetchDocuments])
const scanDocuments = useCallback(async () => { const scanDocuments = useCallback(async () => {
try { try {
@@ -70,9 +67,9 @@ export default function DocumentManager() {
} }
}, [t]) }, [t])
// Only set up polling when the tab is visible and health is good // Set up polling when the documents tab is active and health is good
useEffect(() => { useEffect(() => {
if (!isDocumentsTabVisible || !health) { if (currentTab !== 'documents' || !health) {
return return
} }
@@ -85,7 +82,7 @@ export default function DocumentManager() {
}, 5000) }, 5000)
return () => clearInterval(interval) return () => clearInterval(interval)
}, [health, fetchDocuments, t, isDocumentsTabVisible]) }, [health, fetchDocuments, t, currentTab])
return ( return (
<Card className="!size-full !rounded-none !border-none"> <Card className="!size-full !rounded-none !border-none">