🐛 fix(sort): Refactor sorting logic in NodeTable and SubscribeTable components for improved clarity and performance

This commit is contained in:
web@ppanel 2025-01-28 13:43:18 +07:00
parent a604f28fef
commit 331bbea45f
3 changed files with 14 additions and 12 deletions

View File

@ -291,20 +291,20 @@ export default function NodeTable() {
const sourceIndex = items.findIndex((item) => String(item.id) === source);
const targetIndex = items.findIndex((item) => String(item.id) === target);
const originalSortMap = new Map(items.map((item) => [item.id, item.sort || item.id]));
const originalSorts = items.map((item) => item.sort);
const [movedItem] = items.splice(sourceIndex, 1);
items.splice(targetIndex, 0, movedItem!);
const updatedItems = items.map((item, index) => {
const originalSort = originalSortMap.get(item.id);
const originalSort = originalSorts[index];
const newSort = originalSort !== undefined ? originalSort : item.sort;
return { ...item, sort: newSort };
});
const changedItems = updatedItems.filter(
(item) => originalSortMap.get(item.id) !== item.sort,
);
const changedItems = updatedItems.filter((item, index) => {
return item.sort !== items[index]?.sort;
});
if (changedItems.length > 0) {
nodeSort({

View File

@ -278,20 +278,20 @@ export default function SubscribeTable() {
const sourceIndex = items.findIndex((item) => String(item.id) === source);
const targetIndex = items.findIndex((item) => String(item.id) === target);
const originalSortMap = new Map(items.map((item) => [item.id, item.sort || item.id]));
const originalSorts = items.map((item) => item.sort);
const [movedItem] = items.splice(sourceIndex, 1);
items.splice(targetIndex, 0, movedItem!);
const updatedItems = items.map((item, index) => {
const originalSort = originalSortMap.get(item.id);
const originalSort = originalSorts[index];
const newSort = originalSort !== undefined ? originalSort : item.sort;
return { ...item, sort: newSort };
});
const changedItems = updatedItems.filter(
(item) => originalSortMap.get(item.id) !== item.sort,
);
const changedItems = updatedItems.filter((item, index) => {
return item.sort !== items[index]?.sort;
});
if (changedItems.length > 0) {
subscribeSort({

View File

@ -27,7 +27,7 @@ export function UserNav() {
<Avatar className='size-8'>
<AvatarImage alt={user?.avatar ?? ''} src={user?.avatar ?? ''} />
<AvatarFallback className='rounded-none bg-transparent'>
{user?.email?.[0]?.toUpperCase()}
{user?.auth_methods?.[0]?.auth_identifier.toUpperCase().charAt(0)}
</AvatarFallback>
</Avatar>
</Button>
@ -35,7 +35,9 @@ export function UserNav() {
<DropdownMenuContent forceMount align='end' className='w-56'>
<DropdownMenuLabel className='font-normal'>
<div className='flex flex-col space-y-1'>
<p className='text-sm font-medium leading-none'>{user?.email}</p>
<p className='text-sm font-medium leading-none'>
{user?.auth_methods?.[0]?.auth_identifier}
</p>
{/* <p className='text-xs leading-none text-muted-foreground'>ID: {user?.id}</p> */}
</div>
</DropdownMenuLabel>