From df989440acf3e66730033d5160ef5a222ce926bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Th=C3=A9o=20LAGACHE?= Date: Tue, 23 Jun 2026 16:06:29 +0200 Subject: [PATCH] refactor(users): reorganize into actions/components/schemas --- app/(customer)/dashboard/(admin)/admin/users/page.tsx | 4 ++-- src/features/users/{ => actions}/user.action.ts | 2 +- .../users/{ => components}/admin-user-add-modal.tsx | 2 +- .../{ => components}/admin-user-change-password-modal.tsx | 0 .../{ => components}/admin-user-change-role-modal.tsx | 0 .../users/{ => components}/admin-user-delete-modal.tsx | 2 +- .../users/{ => components}/admin-user-edit-form.tsx | 4 ++-- .../users/{ => components}/admin-user-edit-modal.tsx | 2 +- src/features/users/{ => components}/admin-user-form.tsx | 4 ++-- src/features/users/{ => components}/admin-user-list.tsx | 2 +- src/features/users/{ => components}/user-actions-cell.tsx | 8 ++++---- src/features/users/{ => components}/user-columns.tsx | 2 +- src/features/users/{ => schemas}/user.schema.ts | 0 13 files changed, 16 insertions(+), 16 deletions(-) rename src/features/users/{ => actions}/user.action.ts (98%) rename src/features/users/{ => components}/admin-user-add-modal.tsx (94%) rename src/features/users/{ => components}/admin-user-change-password-modal.tsx (100%) rename src/features/users/{ => components}/admin-user-change-role-modal.tsx (100%) rename src/features/users/{ => components}/admin-user-delete-modal.tsx (98%) rename src/features/users/{ => components}/admin-user-edit-form.tsx (96%) rename src/features/users/{ => components}/admin-user-edit-modal.tsx (93%) rename src/features/users/{ => components}/admin-user-form.tsx (95%) rename src/features/users/{ => components}/admin-user-list.tsx (87%) rename src/features/users/{ => components}/user-actions-cell.tsx (90%) rename src/features/users/{ => components}/user-columns.tsx (98%) rename src/features/users/{ => schemas}/user.schema.ts (100%) diff --git a/app/(customer)/dashboard/(admin)/admin/users/page.tsx b/app/(customer)/dashboard/(admin)/admin/users/page.tsx index a92ca247..9c177219 100644 --- a/app/(customer)/dashboard/(admin)/admin/users/page.tsx +++ b/app/(customer)/dashboard/(admin)/admin/users/page.tsx @@ -2,8 +2,8 @@ import {PageParams} from "@/types/next"; import {Page, PageActions, PageContent, PageHeader, PageTitle} from "@/features/layout/components/page"; import {db} from "@/db"; import {desc, isNull} from "drizzle-orm"; -import {AdminUserList} from "@/features/users/admin-user-list"; -import {AdminUserAddModal} from "@/features/users/admin-user-add-modal"; +import {AdminUserList} from "@/features/users/components/admin-user-list"; +import {AdminUserAddModal} from "@/features/users/components/admin-user-add-modal"; import {SUPPORTED_PROVIDERS} from "@/lib/auth/config"; import {getSettings} from "@/db/services/setting"; import {resolveAvatarUrl} from "@/utils/resolve-avatar-url"; diff --git a/src/features/users/user.action.ts b/src/features/users/actions/user.action.ts similarity index 98% rename from src/features/users/user.action.ts rename to src/features/users/actions/user.action.ts index f413edda..dbef6e9c 100644 --- a/src/features/users/user.action.ts +++ b/src/features/users/actions/user.action.ts @@ -3,7 +3,7 @@ import * as drizzleDb from "@/db"; import { ServerActionResult } from "@/types/action-type"; import { render } from "@react-email/render"; -import { UserSchema } from "@/features/users/user.schema"; +import { UserSchema } from "@/features/users/schemas/user.schema"; import { extractNameFromEmail } from "@/utils/name-from-email"; import { generateValidPassword } from "@/utils/password"; import { auth } from "@/lib/auth/auth"; diff --git a/src/features/users/admin-user-add-modal.tsx b/src/features/users/components/admin-user-add-modal.tsx similarity index 94% rename from src/features/users/admin-user-add-modal.tsx rename to src/features/users/components/admin-user-add-modal.tsx index 60fd9acc..10a7b326 100644 --- a/src/features/users/admin-user-add-modal.tsx +++ b/src/features/users/components/admin-user-add-modal.tsx @@ -6,7 +6,7 @@ import { Plus } from "lucide-react"; import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger } from "@/components/ui/dialog"; import { Button } from "@/components/ui/button"; import { Organization } from "@/db/schema/03_organization"; -import {AdminUserForm} from "@/features/users/admin-user-form"; +import {AdminUserForm} from "@/features/users/components/admin-user-form"; type AdminUserAddModalProps = { organizations: Organization[]; diff --git a/src/features/users/admin-user-change-password-modal.tsx b/src/features/users/components/admin-user-change-password-modal.tsx similarity index 100% rename from src/features/users/admin-user-change-password-modal.tsx rename to src/features/users/components/admin-user-change-password-modal.tsx diff --git a/src/features/users/admin-user-change-role-modal.tsx b/src/features/users/components/admin-user-change-role-modal.tsx similarity index 100% rename from src/features/users/admin-user-change-role-modal.tsx rename to src/features/users/components/admin-user-change-role-modal.tsx diff --git a/src/features/users/admin-user-delete-modal.tsx b/src/features/users/components/admin-user-delete-modal.tsx similarity index 98% rename from src/features/users/admin-user-delete-modal.tsx rename to src/features/users/components/admin-user-delete-modal.tsx index 791b294b..43d1a0d8 100644 --- a/src/features/users/admin-user-delete-modal.tsx +++ b/src/features/users/components/admin-user-delete-modal.tsx @@ -15,7 +15,7 @@ import { } from "@/components/ui/alert-dialog"; import { authClient } from "@/lib/auth/auth-client"; import { toast } from "sonner"; -import { setSuperAdminOwnerOfOrganizationsOwnedByUser } from "@/features/users/user.action"; +import { setSuperAdminOwnerOfOrganizationsOwnedByUser } from "@/features/users/actions/user.action"; type AdminDeleteUserModalProps = { open: boolean; diff --git a/src/features/users/admin-user-edit-form.tsx b/src/features/users/components/admin-user-edit-form.tsx similarity index 96% rename from src/features/users/admin-user-edit-form.tsx rename to src/features/users/components/admin-user-edit-form.tsx index 0d7ad676..ede4ff1d 100644 --- a/src/features/users/admin-user-edit-form.tsx +++ b/src/features/users/components/admin-user-edit-form.tsx @@ -7,8 +7,8 @@ import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, useZodF import { Input } from "@/components/ui/input"; import { ButtonWithLoading } from "@/components/common/button-with-loading"; import {Button} from "@/components/ui/button"; -import {UserEditSchema, UserEditType, UserSchema} from "@/features/users/user.schema"; -import {updateUserAction} from "@/features/users/user.action"; +import {UserEditSchema, UserEditType, UserSchema} from "@/features/users/schemas/user.schema"; +import {updateUserAction} from "@/features/users/actions/user.action"; type AdminUserEditFormProps = { onSuccess?: () => void; defaultValues: { diff --git a/src/features/users/admin-user-edit-modal.tsx b/src/features/users/components/admin-user-edit-modal.tsx similarity index 93% rename from src/features/users/admin-user-edit-modal.tsx rename to src/features/users/components/admin-user-edit-modal.tsx index aba0beb9..617c8f98 100644 --- a/src/features/users/admin-user-edit-modal.tsx +++ b/src/features/users/components/admin-user-edit-modal.tsx @@ -8,7 +8,7 @@ import { DialogHeader, DialogTitle } from "@/components/ui/dialog"; -import {AdminUserEditForm} from "@/features/users/admin-user-edit-form"; +import {AdminUserEditForm} from "@/features/users/components/admin-user-edit-form"; type AdminUserEditPasswordProps = { open: boolean; diff --git a/src/features/users/admin-user-form.tsx b/src/features/users/components/admin-user-form.tsx similarity index 95% rename from src/features/users/admin-user-form.tsx rename to src/features/users/components/admin-user-form.tsx index d41cf3e0..f15d98c8 100644 --- a/src/features/users/admin-user-form.tsx +++ b/src/features/users/components/admin-user-form.tsx @@ -7,9 +7,9 @@ import {Organization} from "@/db/schema/03_organization"; import {Input} from "@/components/ui/input"; import {ButtonWithLoading} from "@/components/common/button-with-loading"; import {Button} from "@/components/ui/button"; -import {UserSchema, UserType} from "@/features/users/user.schema"; +import {UserSchema, UserType} from "@/features/users/schemas/user.schema"; import {toast} from "sonner"; -import {createUserAction} from "@/features/users/user.action"; +import {createUserAction} from "@/features/users/actions/user.action"; type AdminUserFormProps = { onSuccess?: () => void; diff --git a/src/features/users/admin-user-list.tsx b/src/features/users/components/admin-user-list.tsx similarity index 87% rename from src/features/users/admin-user-list.tsx rename to src/features/users/components/admin-user-list.tsx index 910eef37..fa4b249c 100644 --- a/src/features/users/admin-user-list.tsx +++ b/src/features/users/components/admin-user-list.tsx @@ -1,6 +1,6 @@ "use client"; import { DataTable } from "@/components/common/data-table"; -import {usersListColumns} from "@/features/users/user-columns"; +import {usersListColumns} from "@/features/users/components/user-columns"; import {User} from "@/db/schema/02_user"; type AdminUserListProps = { diff --git a/src/features/users/user-actions-cell.tsx b/src/features/users/components/user-actions-cell.tsx similarity index 90% rename from src/features/users/user-actions-cell.tsx rename to src/features/users/components/user-actions-cell.tsx index 65f908fe..3e585b6f 100644 --- a/src/features/users/user-actions-cell.tsx +++ b/src/features/users/components/user-actions-cell.tsx @@ -13,10 +13,10 @@ import {MoreHorizontal, Settings, Trash2, RotateCcwKey, UserCog} from "lucide-re import {authClient} from "@/lib/auth/auth-client"; import {cn} from "@/lib/utils"; import {User} from "@/db/schema/02_user"; -import {AdminUserChangePassword} from "@/features/users/admin-user-change-password-modal"; -import {AdminUserEdit} from "@/features/users/admin-user-edit-modal"; -import {AdminUserChangeRoleModal} from "@/features/users/admin-user-change-role-modal"; -import {AdminDeleteUserModal} from "@/features/users/admin-user-delete-modal"; +import {AdminUserChangePassword} from "@/features/users/components/admin-user-change-password-modal"; +import {AdminUserEdit} from "@/features/users/components/admin-user-edit-modal"; +import {AdminUserChangeRoleModal} from "@/features/users/components/admin-user-change-role-modal"; +import {AdminDeleteUserModal} from "@/features/users/components/admin-user-delete-modal"; interface UserActionsCellProps { user: User; diff --git a/src/features/users/user-columns.tsx b/src/features/users/components/user-columns.tsx similarity index 98% rename from src/features/users/user-columns.tsx rename to src/features/users/components/user-columns.tsx index 574f284b..bb471533 100644 --- a/src/features/users/user-columns.tsx +++ b/src/features/users/components/user-columns.tsx @@ -7,7 +7,7 @@ import {Tooltip, TooltipProvider, TooltipTrigger} from "@/components/ui/tooltip" import {TooltipContent} from "@radix-ui/react-tooltip"; import {Info} from "lucide-react"; import {Table, TableBody, TableCell, TableRow} from "@/components/ui/table"; -import {UserActionsCell} from "@/features/users/user-actions-cell"; +import {UserActionsCell} from "@/features/users/components/user-actions-cell"; type UsersListColumnsProps = { isPasswordAuthEnabled: boolean; diff --git a/src/features/users/user.schema.ts b/src/features/users/schemas/user.schema.ts similarity index 100% rename from src/features/users/user.schema.ts rename to src/features/users/schemas/user.schema.ts