perf: optimize group drag positioning

pull/146/head
moonrailgun 3 years ago
parent 70151af0bb
commit 2adfe923af

@ -1,7 +1,7 @@
import { Avatar, Icon } from 'tailchat-design'; import { Avatar, Icon } from 'tailchat-design';
import { openModal } from '@/components/Modal'; import { openModal } from '@/components/Modal';
import { ModalCreateGroup } from '@/components/modals/CreateGroup'; import { ModalCreateGroup } from '@/components/modals/CreateGroup';
import React, { useMemo } from 'react'; import React, { useMemo, useRef } from 'react';
import { import {
GroupInfo, GroupInfo,
showSuccessToasts, showSuccessToasts,
@ -101,6 +101,7 @@ function useGroupList() {
} }
export const GroupNav: React.FC = React.memo(() => { export const GroupNav: React.FC = React.memo(() => {
const containerRef = useRef<HTMLDivElement>(null);
const { groupList, handleSortEnd } = useGroupList(); const { groupList, handleSortEnd } = useGroupList();
const handleCreateGroup = useEvent(() => { const handleCreateGroup = useEvent(() => {
@ -112,12 +113,16 @@ export const GroupNav: React.FC = React.memo(() => {
})); }));
return ( return (
<div className="space-y-2" data-tc-role="navbar-groups"> <div className="space-y-2" data-tc-role="navbar-groups" ref={containerRef}>
{Array.isArray(groupList) && ( {Array.isArray(groupList) && (
<SortableList className="space-y-2" onSortEnd={handleSortEnd}> <SortableList
className="space-y-2"
onSortEnd={handleSortEnd}
customHolderRef={containerRef}
>
{groupList.map((group) => ( {groupList.map((group) => (
<SortableItem key={group._id}> <SortableItem key={group._id}>
<div> <div className="overflow-hidden">
<GroupNavItem group={group} /> <GroupNavItem group={group} />
</div> </div>
</SortableItem> </SortableItem>

Loading…
Cancel
Save