List için select Endoint çağrı hatası düzeltildi.

This commit is contained in:
Sedat Öztürk 2026-08-01 09:01:40 +03:00
parent 2eef3ead35
commit f39a3e5764

View file

@ -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 '@/utils/registerDevExtremeEditors'
import { useParams, useSearchParams } from 'react-router-dom' import { useParams, useSearchParams } from 'react-router-dom'
import classNames from 'classnames' import classNames from 'classnames'
@ -84,17 +92,31 @@ const List: React.FC = () => {
const { states } = useStoreState((state) => state.admin.lists) const { states } = useStoreState((state) => state.admin.lists)
const { setStates } = useStoreActions((a) => a.admin.lists) const { setStates } = useStoreActions((a) => a.admin.lists)
const [gridDto, setGridDto] = useState<GridDto | null>(null) const activeListFormCodeRef = useRef(listFormCode)
const [viewMode, setViewMode] = useState<ListViewLayoutType | undefined>() 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 🔹 GRID DTO FETCH
======================= */ ======================= */
const refreshGridDto = useCallback(async () => { const refreshGridDto = useCallback(async () => {
if (!listFormCode) return if (!listFormCode) return
const requestedListFormCode = listFormCode
try { try {
const response = await getList({ listFormCode }) const response = await getList({ listFormCode: requestedListFormCode })
setGridDto(response.data) if (activeListFormCodeRef.current !== requestedListFormCode) return
setGridDtoState({ listFormCode: requestedListFormCode, gridDto: response.data })
} catch (err) { } catch (err) {
console.error('GridDto load error:', err) console.error('GridDto load error:', err)
} }
@ -114,7 +136,10 @@ const List: React.FC = () => {
const defaultLayout = gridDto.gridOptions?.layoutDto?.defaultLayout const defaultLayout = gridDto.gridOptions?.layoutDto?.defaultLayout
const candidate = savedLayout ?? defaultLayout const candidate = savedLayout ?? defaultLayout
setViewMode(isLayoutValid(gridDto, candidate) ? candidate : 'grid') setViewModeState({
listFormCode,
layoutType: isLayoutValid(gridDto, candidate) ? candidate : 'grid',
})
}, [gridDto, states, listFormCode]) }, [gridDto, states, listFormCode])
/* ======================= /* =======================
@ -123,7 +148,7 @@ const List: React.FC = () => {
const setLayout = useCallback( const setLayout = useCallback(
(layout: ListViewLayoutType) => { (layout: ListViewLayoutType) => {
startTransition(() => { startTransition(() => {
setViewMode(layout) setViewModeState({ listFormCode, layoutType: layout })
}) })
setStates({ listFormCode, layout }) setStates({ listFormCode, layout })
}, },