From 1104e2a0749ff24f9176bd08f03660970b49a374 Mon Sep 17 00:00:00 2001 From: charlesgauthereau Date: Mon, 5 Jan 2026 19:39:59 +0100 Subject: [PATCH] [FIX] (profile) - error in local upload (#4) --- .../profile/components/avatar-with-upload.tsx | 21 +++++++++---------- src/features/upload/public/upload.action.ts | 8 +++---- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/components/wrappers/dashboard/profile/components/avatar-with-upload.tsx b/src/components/wrappers/dashboard/profile/components/avatar-with-upload.tsx index 164b572c..82c1899a 100644 --- a/src/components/wrappers/dashboard/profile/components/avatar-with-upload.tsx +++ b/src/components/wrappers/dashboard/profile/components/avatar-with-upload.tsx @@ -1,12 +1,12 @@ "use client"; -import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar"; -import { UploadIcon } from "lucide-react"; -import { toast } from "sonner"; -import { uploadImageAction } from "@/features/upload/public/upload.action"; -import { useMutation } from "@tanstack/react-query"; -import { updateImageUserAction } from "@/components/wrappers/dashboard/profile/actions/avatar.action"; -import { useRouter } from "next/navigation"; -import { User } from "@/db/schema/02_user"; +import {Avatar, AvatarFallback, AvatarImage} from "@/components/ui/avatar"; +import {UploadIcon} from "lucide-react"; +import {toast} from "sonner"; +import {uploadImageAction} from "@/features/upload/public/upload.action"; +import {useMutation} from "@tanstack/react-query"; +import {updateImageUserAction} from "@/components/wrappers/dashboard/profile/actions/avatar.action"; +import {useRouter} from "next/navigation"; +import {User} from "@/db/schema/02_user"; import React, {ChangeEvent} from "react"; export type AvatarWithUploadProps = { @@ -55,12 +55,11 @@ export const AvatarWithUpload = (props: AvatarWithUploadProps) => { }; - return (
- + {user.name.charAt(0)} @@ -75,7 +74,7 @@ export const AvatarWithUpload = (props: AvatarWithUploadProps) => { }} className="cursor-pointer absolute inset-0 flex justify-center items-center opacity-0 transition-opacity hover:opacity-100 hover:bg-gray-500 hover:bg-opacity-50 rounded-full w-24 h-24 lg:w-32 lg:h-32" > - +
); diff --git a/src/features/upload/public/upload.action.ts b/src/features/upload/public/upload.action.ts index b6f005fe..087c34bb 100644 --- a/src/features/upload/public/upload.action.ts +++ b/src/features/upload/public/upload.action.ts @@ -15,7 +15,7 @@ import {Setting} from "@/db/schema/01_setting"; import * as drizzleDb from "@/db"; -const privateS3ImageDir = "images/"; +const imageDir = "images/"; export const uploadImageAction = userAction @@ -39,10 +39,10 @@ export const uploadImageAction = userAction let result: void | UploadedObjectInfo; if (settings.storage === "local") { - fileName = `${uuid}.${fileFormat}`; + fileName = `${imageDir}${uuid}.${fileFormat}`; result = await uploadLocal(fileName, buffer); } else if (settings.storage === "s3") { - fileName = `${privateS3ImageDir}${uuid}.${fileFormat}`; + fileName = `${imageDir}${uuid}.${fileFormat}`; result = await uploadS3Compatible(env.S3_BUCKET_NAME ?? "", fileName, buffer); } else { throw new Error(`Unsupported storage type: ${settings.storage}`); @@ -54,7 +54,7 @@ export const uploadImageAction = userAction async function uploadLocal(fileName: string, buffer: any) { - const localDir = "private/uploads/images/"; + const localDir = "private/uploads/"; try { await mkdir(path.join(process.cwd(), localDir), {recursive: true}); return await writeFile(path.join(process.cwd(), localDir + fileName), buffer);