fix: deals setting during dragOver optimization

This commit is contained in:
2025-08-01 11:59:56 +04:00
parent 5137836265
commit d13997ba80

View File

@ -1,6 +1,6 @@
"use client"; "use client";
import React, { FC, useState } from "react"; import React, { FC, useMemo, useState } from "react";
import { import {
closestCorners, closestCorners,
defaultDropAnimation, defaultDropAnimation,
@ -15,6 +15,7 @@ import {
} from "@dnd-kit/core"; } from "@dnd-kit/core";
import { sortableKeyboardCoordinates } from "@dnd-kit/sortable"; import { sortableKeyboardCoordinates } from "@dnd-kit/sortable";
import { LexoRank } from "lexorank"; import { LexoRank } from "lexorank";
import { throttle } from "lodash";
import { Group } from "@mantine/core"; import { Group } from "@mantine/core";
import DealCard from "@/app/deals/components/DealCard/DealCard"; import DealCard from "@/app/deals/components/DealCard/DealCard";
import StatusColumn from "@/app/deals/components/StatusColumn/StatusColumn"; import StatusColumn from "@/app/deals/components/StatusColumn/StatusColumn";
@ -33,6 +34,10 @@ type Props = {
const StatusColumnsDnd: FC<Props> = props => { const StatusColumnsDnd: FC<Props> = props => {
const { statuses, deals, setDeals } = useStatusesContext(); const { statuses, deals, setDeals } = useStatusesContext();
const [activeDeal, setActiveDeal] = useState<DealSchema | null>(null); const [activeDeal, setActiveDeal] = useState<DealSchema | null>(null);
const throttledSetDeals = useMemo(
() => throttle(setDeals, 200),
[setDeals]
);
const sensors = useSensors( const sensors = useSensors(
useSensor(PointerSensor), useSensor(PointerSensor),
@ -67,7 +72,7 @@ const StatusColumnsDnd: FC<Props> = props => {
); );
if (!overStatusId) return; if (!overStatusId) return;
setDeals(deals => throttledSetDeals(deals =>
deals.map(deal => deals.map(deal =>
deal.id === activeDealId deal.id === activeDealId
? { ? {