refactor(upload): update file upload modal and dropzone components

- Changed zodResolver import to standardSchemaResolver for improved schema handling.
- Adjusted Dropzone layout for better visual alignment and user experience.
- Removed unused uploadProcedure from the Docker router to streamline the API.
This commit is contained in:
Mauricio Siu
2026-04-03 17:23:26 -06:00
parent 13f1de5bd7
commit 192716b8ae
3 changed files with 9 additions and 15 deletions

View File

@@ -1,4 +1,4 @@
import { zodResolver } from "@hookform/resolvers/zod";
import { standardSchemaResolver as zodResolver } from "@hookform/resolvers/standard-schema";
import { Upload } from "lucide-react";
import { useState } from "react";
import { useForm } from "react-hook-form";
@@ -13,6 +13,8 @@ import {
DialogTitle,
DialogTrigger,
} from "@/components/ui/dialog";
import { DropdownMenuItem } from "@/components/ui/dropdown-menu";
import { Dropzone } from "@/components/ui/dropzone";
import {
Form,
FormControl,
@@ -22,12 +24,10 @@ import {
FormMessage,
} from "@/components/ui/form";
import { Input } from "@/components/ui/input";
import { DropdownMenuItem } from "@/components/ui/dropdown-menu";
import { Dropzone } from "@/components/ui/dropzone";
import { api } from "@/utils/api";
import {
uploadFileToContainerSchema,
type UploadFileToContainer,
uploadFileToContainerSchema,
} from "@/utils/schema";
interface Props {
@@ -39,7 +39,7 @@ interface Props {
export const UploadFileModal = ({ children, containerId, serverId }: Props) => {
const [open, setOpen] = useState(false);
const { mutateAsync: uploadFile, isLoading } =
const { mutateAsync: uploadFile, isPending: isLoading } =
api.docker.uploadFileToContainer.useMutation({
onSuccess: () => {
toast.success("File uploaded successfully");

View File

@@ -56,9 +56,9 @@ export const Dropzone = React.forwardRef<HTMLDivElement, DropzoneProps>(
onDrop={handleDrop}
onClick={handleButtonClick}
>
<div className="flex items-center justify-center text-muted-foreground">
<span className="font-medium text-xl flex items-center gap-2">
<FolderIcon className="size-6 text-muted-foreground" />
<div className="flex flex-col items-center justify-center text-muted-foreground">
<FolderIcon className="size-6 text-muted-foreground" />
<span className="font-medium text-xl text-center">
{dropMessage}
</span>
<Input

View File

@@ -14,12 +14,7 @@ import { TRPCError } from "@trpc/server";
import { z } from "zod";
import { audit } from "@/server/api/utils/audit";
import { uploadFileToContainerSchema } from "@/utils/schema";
import {
createTRPCRouter,
protectedProcedure,
uploadProcedure,
withPermission,
} from "../trpc";
import { createTRPCRouter, protectedProcedure, withPermission } from "../trpc";
export const containerIdRegex = /^[a-zA-Z0-9.\-_]+$/;
@@ -185,7 +180,6 @@ export const dockerRouter = createTRPCRouter({
}),
uploadFileToContainer: protectedProcedure
.use(uploadProcedure)
.input(uploadFileToContainerSchema)
.mutation(async ({ input, ctx }) => {
if (input.serverId) {