diff --git a/apps/admin/app/dashboard/server/node-table.tsx b/apps/admin/app/dashboard/server/node-table.tsx index 4b99d7c..cd5db2d 100644 --- a/apps/admin/app/dashboard/server/node-table.tsx +++ b/apps/admin/app/dashboard/server/node-table.tsx @@ -205,7 +205,7 @@ export default function NodeTable() { await createNode({ ...params, enable: false, - }); + } as API.CreateNodeRequest); toast.success(t('copySuccess')); ref.current?.refresh(); setLoading(false); @@ -258,26 +258,27 @@ export default function NodeTable() { const sourceIndex = items.findIndex((item) => String(item.id) === source); const targetIndex = items.findIndex((item) => String(item.id) === target); - const originalSorts = items.map((item) => ({ id: item.id, sort: item.sort || item.id })); + const originalSortMap = new Map(items.map((item) => [item.id, item.sort || item.id])); const [movedItem] = items.splice(sourceIndex, 1); items.splice(targetIndex, 0, movedItem!); - const updatedItems = items.map((item) => { - const originalSort = originalSorts.find((sortItem) => sortItem.id === item.id)?.sort; - return { - ...item, - sort: originalSort !== undefined ? originalSort : item.sort, - }; - }); - nodeSort({ - sort: updatedItems.map((item) => { - return { - id: item.id, - sort: item.sort, - }; - }), + const updatedItems = items.map((item, index) => { + const originalSort = originalSortMap.get(item.id); + const newSort = originalSort !== undefined ? originalSort : item.sort; + return { ...item, sort: newSort }; }); + + const changedItems = updatedItems.filter( + (item) => originalSortMap.get(item.id) !== item.sort, + ); + + if (changedItems.length > 0) { + nodeSort({ + sort: changedItems.map((item) => ({ id: item.id, sort: item.sort })), + }); + } + return updatedItems; }} /> diff --git a/apps/admin/app/dashboard/subscribe/subscribe-table.tsx b/apps/admin/app/dashboard/subscribe/subscribe-table.tsx index e72f8e7..c0ef8fe 100644 --- a/apps/admin/app/dashboard/subscribe/subscribe-table.tsx +++ b/apps/admin/app/dashboard/subscribe/subscribe-table.tsx @@ -266,26 +266,27 @@ export default function SubscribeTable() { const sourceIndex = items.findIndex((item) => String(item.id) === source); const targetIndex = items.findIndex((item) => String(item.id) === target); - const originalSorts = items.map((item) => ({ id: item.id, sort: item.sort || item.id })); + const originalSortMap = new Map(items.map((item) => [item.id, item.sort || item.id])); const [movedItem] = items.splice(sourceIndex, 1); items.splice(targetIndex, 0, movedItem!); - const updatedItems = items.map((item) => { - const originalSort = originalSorts.find((sortItem) => sortItem.id === item.id)?.sort; - return { - ...item, - sort: originalSort !== undefined ? originalSort : item.sort, - }; - }); - subscribeSort({ - sort: updatedItems.map((item) => { - return { - id: item.id, - sort: item.sort, - }; - }), + const updatedItems = items.map((item, index) => { + const originalSort = originalSortMap.get(item.id); + const newSort = originalSort !== undefined ? originalSort : item.sort; + return { ...item, sort: newSort }; }); + + const changedItems = updatedItems.filter( + (item) => originalSortMap.get(item.id) !== item.sort, + ); + + if (changedItems.length > 0) { + subscribeSort({ + sort: changedItems.map((item) => ({ id: item.id, sort: item.sort })), + }); + } + return updatedItems; }} /> diff --git a/apps/admin/services/admin/typings.d.ts b/apps/admin/services/admin/typings.d.ts index 1af2005..678ee5b 100644 --- a/apps/admin/services/admin/typings.d.ts +++ b/apps/admin/services/admin/typings.d.ts @@ -131,6 +131,7 @@ declare namespace API { protocol: string; config: Record; enable: boolean; + sort: number; }; type CreateOrderRequest = { @@ -276,14 +277,18 @@ declare namespace API { type GetAnnouncementListParams = { page: number; size: number; - enable?: boolean; + show?: boolean; + pinned?: boolean; + popup?: boolean; search?: string; }; type GetAnnouncementListRequest = { page: number; size: number; - enable?: boolean; + show?: boolean; + pinned?: boolean; + popup?: boolean; search?: string; }; @@ -891,6 +896,7 @@ declare namespace API { protocol: string; config: Record; enable: boolean; + sort: number; }; type UpdateOrderStatusRequest = { diff --git a/apps/user/app/(main)/(user)/announcement/page.tsx b/apps/user/app/(main)/(user)/announcement/page.tsx index 0a6c230..0d0ec37 100644 --- a/apps/user/app/(main)/(user)/announcement/page.tsx +++ b/apps/user/app/(main)/(user)/announcement/page.tsx @@ -12,7 +12,9 @@ export default function Page() { queryFn: async () => { const { data } = await queryAnnouncement({ page: 1, - size: 20, + size: 99, + pinned: false, + popup: false, }); return data.data?.announcements || []; }, diff --git a/apps/user/components/announcement/index.tsx b/apps/user/components/announcement/index.tsx index 4dc6abf..3e327c1 100644 --- a/apps/user/components/announcement/index.tsx +++ b/apps/user/components/announcement/index.tsx @@ -18,7 +18,9 @@ export default async function Announcement({ data = await queryAnnouncement( { page: 1, - size: 50, + size: 10, + pinned: type === 'pinned', + popup: type === 'popup', }, { skipErrorHandler: true, diff --git a/apps/user/services/user/typings.d.ts b/apps/user/services/user/typings.d.ts index 4c69f5b..537bfb1 100644 --- a/apps/user/services/user/typings.d.ts +++ b/apps/user/services/user/typings.d.ts @@ -249,11 +249,15 @@ declare namespace API { type QueryAnnouncementParams = { page: number; size: number; + pinned: boolean; + popup: boolean; }; type QueryAnnouncementRequest = { page: number; size: number; + pinned: boolean; + popup: boolean; }; type QueryAnnouncementResponse = {