refactor(settings): reorganize into actions/components/schemas/hooks

This commit is contained in:
Théo LAGACHE
2026-06-23 16:06:26 +02:00
parent 8c670d57c7
commit 36754973c6
21 changed files with 28 additions and 28 deletions
@@ -3,7 +3,7 @@ import {Page, PageContent, PageHeader, PageTitle} from "@/features/layout/compon
import {db} from "@/db";
import {logger} from "@/lib/logger";
import {notFound} from "next/navigation";
import {SettingsTabs} from "@/features/settings/settings-tabs";
import {SettingsTabs} from "@/features/settings/components/settings-tabs";
import {desc, isNull} from "drizzle-orm";
import * as drizzleDb from "@/db";
import {StorageChannelWith} from "@/db/schema/12_storage-channel";
@@ -18,11 +18,11 @@ import type {
OnboardingDefaultsData,
} from "@/features/onboarding/types";
import { getChannelIcon } from "@/features/channel/components/channels-helpers";
import { updateNotificationSettingsAction } from "@/features/settings/notification.action";
import { updateStorageSettingsAction } from "@/features/settings/storage.action";
import { updateAvatarModeAction } from "@/features/settings/avatar.action";
import { AvatarModeSelector } from "@/features/settings/avatar-mode-selector";
import { DicebearStylePicker } from "@/features/settings/dicebear-style-picker";
import { updateNotificationSettingsAction } from "@/features/settings/actions/notification.action";
import { updateStorageSettingsAction } from "@/features/settings/actions/storage.action";
import { updateAvatarModeAction } from "@/features/settings/actions/avatar.action";
import { AvatarModeSelector } from "@/features/settings/components/avatar-mode-selector";
import { DicebearStylePicker } from "@/features/settings/components/dicebear-style-picker";
export const StepDefaults = () => {
const { next, updateContext, state } = useOnboarding();
@@ -1,6 +1,6 @@
"use server";
import { z } from "zod";
import { EmailFormSchema } from "@/features/settings/email-form.schema";
import { EmailFormSchema } from "@/features/settings/schemas/email-form.schema";
import { eq } from "drizzle-orm";
import { db } from "@/db";
import * as drizzleDb from "@/db";
@@ -7,7 +7,7 @@ import {eq} from "drizzle-orm";
import {ServerActionResult} from "@/types/action-type";
import {Setting} from "@/db/schema/01_setting";
import {z} from "zod";
import {DefaultNotificationSchema} from "@/features/settings/notification.schema";
import {DefaultNotificationSchema} from "@/features/settings/schemas/notification.schema";
import {withUpdatedAt} from "@/db/utils";
export const updateNotificationSettingsAction = userAction
@@ -2,7 +2,7 @@
import { z } from "zod";
import { db } from "@/db";
import { S3FormSchema, StorageSwitchSchema } from "@/features/settings/storage-s3.schema";
import { S3FormSchema, StorageSwitchSchema } from "@/features/settings/schemas/storage-s3.schema";
import { eq } from "drizzle-orm";
import * as drizzleDb from "@/db";
import {userAction} from "@/lib/safe-actions/actions";
@@ -7,7 +7,7 @@ import {eq} from "drizzle-orm";
import {ServerActionResult} from "@/types/action-type";
import {Setting} from "@/db/schema/01_setting";
import {z} from "zod";
import {DefaultStorageSchema} from "@/features/settings/storage.schema";
import {DefaultStorageSchema} from "@/features/settings/schemas/storage.schema";
import {withUpdatedAt} from "@/db/utils";
export const updateStorageSettingsAction = userAction
@@ -5,9 +5,9 @@ import { useMutation } from "@tanstack/react-query";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import { Setting } from "@/db/schema/01_setting";
import { updateAvatarModeAction } from "@/features/settings/avatar.action";
import { AvatarModeSelector } from "@/features/settings/avatar-mode-selector";
import { DicebearStylePicker } from "@/features/settings/dicebear-style-picker";
import { updateAvatarModeAction } from "@/features/settings/actions/avatar.action";
import { AvatarModeSelector } from "@/features/settings/components/avatar-mode-selector";
import { DicebearStylePicker } from "@/features/settings/components/dicebear-style-picker";
import type { AvatarMode } from "@/features/onboarding/types";
type Props = { settings: Setting };
@@ -2,7 +2,7 @@
import { AlertCircle, Loader2 } from "lucide-react";
import { cn } from "@/lib/utils";
import { useDiceBearStyles } from "@/features/settings/use-dicebear-styles";
import { useDiceBearStyles } from "@/features/settings/hooks/use-dicebear-styles";
const DEMO_SEED = "portabase";
@@ -18,11 +18,11 @@ import {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from "@/compon
import {
EmailFormSchema,
EmailFormType
} from "@/features/settings/email-form.schema";
} from "@/features/settings/schemas/email-form.schema";
import {PasswordInput} from "@/components/ui/password-input";
import {
updateEmailSettingsAction
} from "@/features/settings/email-form.action";
} from "@/features/settings/actions/email-form.action";
import {toast} from "sonner";
import {useRouter} from "next/navigation";
import {sendEmail} from "@/lib/email";
@@ -1,7 +1,7 @@
"use client"
import {EmailForm} from "@/features/settings/email-form";
import {EmailForm} from "@/features/settings/components/email-form";
import {Setting} from "@/db/schema/01_setting";
import {EmailFormType} from "@/features/settings/email-form.schema";
import {EmailFormType} from "@/features/settings/schemas/email-form.schema";
export type SettingsEmailSectionProps = {
@@ -17,10 +17,10 @@ import {getChannelIcon} from "@/features/channel/components/channels-helpers";
import {NotificationChannelWith} from "@/db/schema/09_notification-channel";
import {
DefaultNotificationSchema, DefaultNotificationType
} from "@/features/settings/notification.schema";
} from "@/features/settings/schemas/notification.schema";
import {
updateNotificationSettingsAction
} from "@/features/settings/notification.action";
} from "@/features/settings/actions/notification.action";
import {toast} from "sonner";
import {Badge} from "@/components/ui/badge";
@@ -4,13 +4,13 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
import { useEffect, useState } from "react";
import { useRouter, useSearchParams } from "next/navigation";
import { Setting } from "@/db/schema/01_setting";
import { SettingsEmailSection } from "@/features/settings/email-section";
import { SettingsStorageSection } from "@/features/settings/storage-section";
import { SettingsEmailSection } from "@/features/settings/components/email-section";
import { SettingsStorageSection } from "@/features/settings/components/storage-section";
import { StorageChannelWith } from "@/db/schema/12_storage-channel";
import { AlarmClock, MailboxIcon, Save, UserCircle } from "lucide-react";
import { SettingsNotificationSection } from "@/features/settings/notification-section";
import { SettingsNotificationSection } from "@/features/settings/components/notification-section";
import { NotificationChannelWith } from "@/db/schema/09_notification-channel";
import { SettingsAvatarSection } from "@/features/settings/avatar-section";
import { SettingsAvatarSection } from "@/features/settings/components/avatar-section";
export type SettingsTabsProps = {
settings: Setting;
@@ -8,10 +8,10 @@ import { Button } from "@/components/ui/button";
import { useMutation } from "@tanstack/react-query";
import { TooltipProvider } from "@/components/ui/tooltip";
import { S3FormSchema, S3FormType } from "@/features/settings/storage-s3.schema";
import { S3FormSchema, S3FormType } from "@/features/settings/schemas/storage-s3.schema";
import { useRouter } from "next/navigation";
import { toast } from "sonner";
import { updateS3SettingsAction } from "@/features/settings/storage-s3.action";
import { updateS3SettingsAction } from "@/features/settings/actions/storage-s3.action";
import {PasswordInput} from "@/components/ui/password-input";
export type S3FormProps = {
@@ -19,11 +19,11 @@ import {useMutation} from "@tanstack/react-query";
import {
DefaultStorageSchema,
DefaultStorageType
} from "@/features/settings/storage.schema";
} from "@/features/settings/schemas/storage.schema";
import {getChannelIcon} from "@/features/channel/components/channels-helpers";
import {
updateStorageSettingsAction
} from "@/features/settings/storage.action";
} from "@/features/settings/actions/storage.action";
import {toast} from "sonner";
import {Switch} from "@/components/ui/switch";
import {downloadMasterKeyAction} from "@/features/agents/actions/keys.action";