From 18d5d513b4f619296c43071e126a133d68744a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9D=9E=E6=B3=95=E6=93=8D=E4=BD=9C?= Date: Mon, 8 Dec 2025 10:22:26 +0800 Subject: [PATCH] fix: view log detail clear query params (#29256) --- web/app/components/app/log/index.tsx | 38 ++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/web/app/components/app/log/index.tsx b/web/app/components/app/log/index.tsx index cedf2de74d..4fda71bece 100644 --- a/web/app/components/app/log/index.tsx +++ b/web/app/components/app/log/index.tsx @@ -27,24 +27,33 @@ export type QueryParam = { sort_by?: string } +const defaultQueryParams: QueryParam = { + period: '2', + annotation_status: 'all', + sort_by: '-created_at', +} + +const logsStateCache = new Map() + const Logs: FC = ({ appDetail }) => { const { t } = useTranslation() const router = useRouter() const pathname = usePathname() const searchParams = useSearchParams() - const [queryParams, setQueryParams] = useState({ - period: '2', - annotation_status: 'all', - sort_by: '-created_at', - }) const getPageFromParams = useCallback(() => { const pageParam = Number.parseInt(searchParams.get('page') || '1', 10) if (Number.isNaN(pageParam) || pageParam < 1) return 0 return pageParam - 1 }, [searchParams]) - const [currPage, setCurrPage] = React.useState(() => getPageFromParams()) - const [limit, setLimit] = React.useState(APP_PAGE_LIMIT) + const cachedState = logsStateCache.get(appDetail.id) + const [queryParams, setQueryParams] = useState(cachedState?.queryParams ?? defaultQueryParams) + const [currPage, setCurrPage] = React.useState(() => cachedState?.currPage ?? getPageFromParams()) + const [limit, setLimit] = React.useState(cachedState?.limit ?? APP_PAGE_LIMIT) const debouncedQueryParams = useDebounce(queryParams, { wait: 500 }) useEffect(() => { @@ -52,6 +61,14 @@ const Logs: FC = ({ appDetail }) => { setCurrPage(prev => (prev === pageFromParams ? prev : pageFromParams)) }, [getPageFromParams]) + useEffect(() => { + logsStateCache.set(appDetail.id, { + queryParams, + currPage, + limit, + }) + }, [appDetail.id, currPage, limit, queryParams]) + // Get the app type first const isChatMode = appDetail.mode !== AppModeEnum.COMPLETION @@ -85,6 +102,11 @@ const Logs: FC = ({ appDetail }) => { const total = isChatMode ? chatConversations?.total : completionConversations?.total + const handleQueryParamsChange = useCallback((next: QueryParam) => { + setCurrPage(0) + setQueryParams(next) + }, []) + const handlePageChange = useCallback((page: number) => { setCurrPage(page) const params = new URLSearchParams(searchParams.toString()) @@ -101,7 +123,7 @@ const Logs: FC = ({ appDetail }) => {

{t('appLog.description')}

- + {total === undefined ? : total > 0