From be16ad26b5f95ec30e0f105e1496c958240208e3 Mon Sep 17 00:00:00 2001 From: t0ng7u Date: Sat, 19 Jul 2025 00:44:09 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8F=97=EF=B8=8F=20refactor:=20complete=20?= =?UTF-8?q?table=20module=20architecture=20unification=20and=20cleanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BREAKING CHANGE: Removed standalone user edit routes and intermediate export files ## Major Refactoring - Decompose 673-line monolithic UsersTable.js into 8 specialized components - Extract column definitions to UsersColumnDefs.js with render functions - Create dedicated UsersActions.jsx for action buttons - Create UsersFilters.jsx for search and filtering logic - Create UsersDescription.jsx for description area - Extract all data management logic to useUsersData.js hook - Move AddUser.js and EditUser.js to users/modals/ folder as modal components - Create 4 new confirmation modal components (Promote, Demote, EnableDisable, Delete) - Implement pure UsersTable.jsx component for table rendering only - Create main container component users/index.jsx to compose all subcomponents ## Import Path Optimization - Remove 6 intermediate re-export files: ChannelsTable.js, TokensTable.js, RedemptionsTable.js, UsageLogsTable.js, MjLogsTable.js, TaskLogsTable.js - Update all pages to import directly from module folders (e.g., '../../components/table/tokens') - Standardize naming convention: all pages import as XxxTable while internal components use XxxPage ## Route Cleanup - Remove obsolete EditUser imports and routes from App.js (/console/user/edit, /console/user/edit/:id) - Delete original monolithic files: UsersTable.js, AddUser.js, EditUser.js ## Architecture Benefits - Unified modular pattern across all table modules (tokens, redemptions, users, channels, logs) - Consistent file organization and naming conventions - Better separation of concerns and maintainability - Enhanced reusability and testability - Eliminated unnecessary intermediate layers - Improved import clarity and performance All existing functionality preserved with significantly improved code organization. --- web/src/components/table/ChannelsTable.js | 2 -- web/src/components/table/MjLogsTable.js | 2 -- web/src/components/table/RedemptionsTable.js | 2 -- web/src/components/table/TaskLogsTable.js | 2 -- web/src/components/table/TokensTable.js | 2 -- web/src/components/table/UsageLogsTable.js | 2 -- web/src/components/table/users/index.jsx | 2 +- .../table/users/modals/DeleteUserModal.jsx | 10 +++++----- .../table/users/modals/EnableDisableUserModal.jsx | 14 +++++++------- web/src/pages/Channel/index.js | 2 +- web/src/pages/Log/index.js | 2 +- web/src/pages/Midjourney/index.js | 2 +- web/src/pages/Redemption/index.js | 2 +- web/src/pages/Task/index.js | 2 +- web/src/pages/Token/index.js | 2 +- web/src/pages/User/index.js | 4 ++-- 16 files changed, 21 insertions(+), 33 deletions(-) delete mode 100644 web/src/components/table/ChannelsTable.js delete mode 100644 web/src/components/table/MjLogsTable.js delete mode 100644 web/src/components/table/RedemptionsTable.js delete mode 100644 web/src/components/table/TaskLogsTable.js delete mode 100644 web/src/components/table/TokensTable.js delete mode 100644 web/src/components/table/UsageLogsTable.js diff --git a/web/src/components/table/ChannelsTable.js b/web/src/components/table/ChannelsTable.js deleted file mode 100644 index 6a423997..00000000 --- a/web/src/components/table/ChannelsTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 ChannelsTable - 使用新的模块化架构 -export { default } from './channels/index.jsx'; diff --git a/web/src/components/table/MjLogsTable.js b/web/src/components/table/MjLogsTable.js deleted file mode 100644 index a5f614d0..00000000 --- a/web/src/components/table/MjLogsTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 MjLogsTable - 使用新的模块化架构 -export { default } from './mj-logs/index.jsx'; \ No newline at end of file diff --git a/web/src/components/table/RedemptionsTable.js b/web/src/components/table/RedemptionsTable.js deleted file mode 100644 index d2e89b97..00000000 --- a/web/src/components/table/RedemptionsTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 RedemptionsTable - 使用新的模块化架构 -export { default } from './redemptions/index.jsx'; \ No newline at end of file diff --git a/web/src/components/table/TaskLogsTable.js b/web/src/components/table/TaskLogsTable.js deleted file mode 100644 index a6996611..00000000 --- a/web/src/components/table/TaskLogsTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 TaskLogsTable - 使用新的模块化架构 -export { default } from './task-logs/index.jsx'; \ No newline at end of file diff --git a/web/src/components/table/TokensTable.js b/web/src/components/table/TokensTable.js deleted file mode 100644 index d74a49e2..00000000 --- a/web/src/components/table/TokensTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 TokensTable - 使用新的模块化架构 -export { default } from './tokens/index.jsx'; \ No newline at end of file diff --git a/web/src/components/table/UsageLogsTable.js b/web/src/components/table/UsageLogsTable.js deleted file mode 100644 index da0623ae..00000000 --- a/web/src/components/table/UsageLogsTable.js +++ /dev/null @@ -1,2 +0,0 @@ -// 重构后的 UsageLogsTable - 使用新的模块化架构 -export { default } from './usage-logs/index.jsx'; \ No newline at end of file diff --git a/web/src/components/table/users/index.jsx b/web/src/components/table/users/index.jsx index 5eba39a6..64885e99 100644 --- a/web/src/components/table/users/index.jsx +++ b/web/src/components/table/users/index.jsx @@ -47,7 +47,7 @@ const UsersPage = () => { visible={showAddUser} handleClose={closeAddUser} /> - + { const handleConfirm = async () => { await manageUser(user.id, 'delete', user); diff --git a/web/src/components/table/users/modals/EnableDisableUserModal.jsx b/web/src/components/table/users/modals/EnableDisableUserModal.jsx index be95cf40..9c2ed54f 100644 --- a/web/src/components/table/users/modals/EnableDisableUserModal.jsx +++ b/web/src/components/table/users/modals/EnableDisableUserModal.jsx @@ -1,16 +1,16 @@ import React from 'react'; import { Modal } from '@douyinfe/semi-ui'; -const EnableDisableUserModal = ({ - visible, - onCancel, - onConfirm, - user, +const EnableDisableUserModal = ({ + visible, + onCancel, + onConfirm, + user, action, - t + t }) => { const isDisable = action === 'disable'; - + return ( { return ( diff --git a/web/src/pages/Log/index.js b/web/src/pages/Log/index.js index f4bed060..a7c3fa37 100644 --- a/web/src/pages/Log/index.js +++ b/web/src/pages/Log/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import UsageLogsTable from '../../components/table/UsageLogsTable'; +import UsageLogsTable from '../../components/table/usage-logs'; const Token = () => (
diff --git a/web/src/pages/Midjourney/index.js b/web/src/pages/Midjourney/index.js index 67d9f76c..04414c95 100644 --- a/web/src/pages/Midjourney/index.js +++ b/web/src/pages/Midjourney/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import MjLogsTable from '../../components/table/MjLogsTable'; +import MjLogsTable from '../../components/table/mj-logs'; const Midjourney = () => (
diff --git a/web/src/pages/Redemption/index.js b/web/src/pages/Redemption/index.js index 44bb1c87..60bb3ac6 100644 --- a/web/src/pages/Redemption/index.js +++ b/web/src/pages/Redemption/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import RedemptionsTable from '../../components/table/RedemptionsTable'; +import RedemptionsTable from '../../components/table/redemptions'; const Redemption = () => { return ( diff --git a/web/src/pages/Task/index.js b/web/src/pages/Task/index.js index 261bd7da..f7b78ec2 100644 --- a/web/src/pages/Task/index.js +++ b/web/src/pages/Task/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import TaskLogsTable from '../../components/table/TaskLogsTable.js'; +import TaskLogsTable from '../../components/table/task-logs'; const Task = () => (
diff --git a/web/src/pages/Token/index.js b/web/src/pages/Token/index.js index 5f825741..4bb376a6 100644 --- a/web/src/pages/Token/index.js +++ b/web/src/pages/Token/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import TokensTable from '../../components/table/TokensTable'; +import TokensTable from '../../components/table/tokens'; const Token = () => { return ( diff --git a/web/src/pages/User/index.js b/web/src/pages/User/index.js index d06ee7ed..b1956ec6 100644 --- a/web/src/pages/User/index.js +++ b/web/src/pages/User/index.js @@ -1,10 +1,10 @@ import React from 'react'; -import UsersPage from '../../components/table/users'; +import UsersTable from '../../components/table/users'; const User = () => { return (
- +
); };