From 86f56b473545df5135f6846a7e36cece61c50a01 Mon Sep 17 00:00:00 2001 From: smanylov Date: Fri, 17 Apr 2026 13:41:05 +0700 Subject: [PATCH] disable a select file while global serch --- src/app/ui/search/file-search-panel.tsx | 12 +++++++----- src/app/ui/search/section-search-file.tsx | 16 ++++++++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/app/ui/search/file-search-panel.tsx b/src/app/ui/search/file-search-panel.tsx index 7c85fce..192ba01 100644 --- a/src/app/ui/search/file-search-panel.tsx +++ b/src/app/ui/search/file-search-panel.tsx @@ -1,6 +1,6 @@ import { SearchedUserFilesList } from '@/app/ui/search/searched-user-files-list'; import { SearchedGlobalFilesList } from '@/app/ui/search/searched-global-files-list'; -import { useCallback, useState, useImperativeHandle } from 'react'; +import { useCallback, useState, useImperativeHandle, useEffect } from 'react'; import { searchUserFiles, searchGlobalFiles } from '@/app/actions/searchActions'; import { useQueryClient } from '@tanstack/react-query'; import { Pagination } from '@/app/components/Pagination'; @@ -29,9 +29,9 @@ export interface FileInfo { } export function FileSearchPanel( - { fileId, ref, allowedExtensions, fileType } + { fileId, ref, allowedExtensions, fileType, onLoadingChange } : - { fileId: string | null, ref: any, allowedExtensions: AllowedExtensions, fileType: string | null } + { fileId: string | null, ref: any, allowedExtensions: AllowedExtensions, fileType: string | null, onLoadingChange?: (loading: boolean) => void } ) { const [searchedUserFiles, setSearchedUserFiles] = useState([]); const [searchedUserFilesShowNull, setSearchedUserFilesShowNull] = useState(false); @@ -115,6 +115,7 @@ export function FileSearchPanel( if (!actionFromPagination) { setLoading(true); + onLoadingChange?.(true); setSearchedGlobalFilesShowNull(false); setSearchedGlobalFiles([]); } else { @@ -142,9 +143,10 @@ export function FileSearchPanel( setGlobalSearchErrorMessage('error'); } } finally { -/* await queryClient.invalidateQueries({ queryKey: ['userData'] }); - await queryClient.invalidateQueries({ queryKey: ['userSearchData'] }); */ + /* await queryClient.invalidateQueries({ queryKey: ['userData'] }); + await queryClient.invalidateQueries({ queryKey: ['userSearchData'] }); */ setLoading(false); + onLoadingChange?.(false); setPaginationLoading(false); } diff --git a/src/app/ui/search/section-search-file.tsx b/src/app/ui/search/section-search-file.tsx index e1010d7..b5224b0 100644 --- a/src/app/ui/search/section-search-file.tsx +++ b/src/app/ui/search/section-search-file.tsx @@ -49,6 +49,7 @@ export default function SectionSearchFile() { const [fileType, setFileType] = useState(null); const queryClient = useQueryClient(); const isCancelledRef = useRef(false); + const [isFileSearchLoading, setIsFileSearchLoading] = useState(false); const childRef = useRef(null); @@ -285,6 +286,10 @@ export default function SectionSearchFile() { } }); + const handleLoadingChange = (loading: boolean) => { + setIsFileSearchLoading(loading); + }; + return (
@@ -316,13 +321,14 @@ export default function SectionSearchFile() { style={{ display: 'none' }} onChange={handleFileInputChange} aria-label="Выбор файла для защиты" + disabled={isFileSearchLoading || (uploadProgress !== undefined && uploadProgress !== 100)} /> @@ -363,7 +369,13 @@ export default function SectionSearchFile() {
{isFileUploaded && ( - + )}
);