From f39a3e576470e0df004e81ac631276ce2e7ed3de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sedat=20=C3=96zt=C3=BCrk?= Date: Sat, 1 Aug 2026 09:01:40 +0300 Subject: [PATCH] =?UTF-8?q?List=20i=C3=A7in=20select=20Endoint=20=C3=A7a?= =?UTF-8?q?=C4=9Fr=C4=B1=20hatas=C4=B1=20d=C3=BCzeltildi.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/src/views/list/List.tsx | 39 +++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/ui/src/views/list/List.tsx b/ui/src/views/list/List.tsx index 8b448bfe..e9e4df94 100644 --- a/ui/src/views/list/List.tsx +++ b/ui/src/views/list/List.tsx @@ -1,4 +1,12 @@ -import React, { Suspense, startTransition, useCallback, useEffect, useMemo, useState } from 'react' +import React, { + Suspense, + startTransition, + useCallback, + useEffect, + useMemo, + useRef, + useState, +} from 'react' import '@/utils/registerDevExtremeEditors' import { useParams, useSearchParams } from 'react-router-dom' import classNames from 'classnames' @@ -84,17 +92,31 @@ const List: React.FC = () => { const { states } = useStoreState((state) => state.admin.lists) const { setStates } = useStoreActions((a) => a.admin.lists) - const [gridDto, setGridDto] = useState(null) - const [viewMode, setViewMode] = useState() + const activeListFormCodeRef = useRef(listFormCode) + activeListFormCodeRef.current = listFormCode + + const [gridDtoState, setGridDtoState] = useState<{ + listFormCode: string + gridDto: GridDto | null + }>({ listFormCode: '', gridDto: null }) + const gridDto = gridDtoState.listFormCode === listFormCode ? gridDtoState.gridDto : null + + const [viewModeState, setViewModeState] = useState<{ + listFormCode: string + layoutType?: ListViewLayoutType + }>({ listFormCode: '' }) + const viewMode = viewModeState.listFormCode === listFormCode ? viewModeState.layoutType : undefined /* ======================= 🔹 GRID DTO FETCH ======================= */ const refreshGridDto = useCallback(async () => { if (!listFormCode) return + const requestedListFormCode = listFormCode try { - const response = await getList({ listFormCode }) - setGridDto(response.data) + const response = await getList({ listFormCode: requestedListFormCode }) + if (activeListFormCodeRef.current !== requestedListFormCode) return + setGridDtoState({ listFormCode: requestedListFormCode, gridDto: response.data }) } catch (err) { console.error('GridDto load error:', err) } @@ -114,7 +136,10 @@ const List: React.FC = () => { const defaultLayout = gridDto.gridOptions?.layoutDto?.defaultLayout const candidate = savedLayout ?? defaultLayout - setViewMode(isLayoutValid(gridDto, candidate) ? candidate : 'grid') + setViewModeState({ + listFormCode, + layoutType: isLayoutValid(gridDto, candidate) ? candidate : 'grid', + }) }, [gridDto, states, listFormCode]) /* ======================= @@ -123,7 +148,7 @@ const List: React.FC = () => { const setLayout = useCallback( (layout: ListViewLayoutType) => { startTransition(() => { - setViewMode(layout) + setViewModeState({ listFormCode, layoutType: layout }) }) setStates({ listFormCode, layout }) },