fix: init bucket before upload and remove MinIO UI references

This commit is contained in:
Erik Silva
2026-01-20 14:43:13 -03:00
parent f103727920
commit f4582ed844
2 changed files with 10 additions and 7 deletions

View File

@@ -2,13 +2,14 @@
import { PutObjectCommand } from "@aws-sdk/client-s3"; import { PutObjectCommand } from "@aws-sdk/client-s3";
import { s3Client, BUCKET_NAME } from "@/lib/s3"; import { s3Client, BUCKET_NAME } from "@/lib/s3";
import { initMinio } from "@/lib/init-minio";
import { v4 as uuidv4 } from "uuid"; import { v4 as uuidv4 } from "uuid";
// Get the public URL for MinIO files // Get the public URL for files
// In production, files are served through /api/files proxy // In production, files are served through /api/files proxy
function getPublicUrl(fileName: string): string { function getPublicUrl(fileName: string): string {
// Always use our API proxy route to serve files // Always use our API proxy route to serve files
// This ensures files are accessible even when MinIO is not publicly exposed // This ensures files are accessible even when storage is not publicly exposed
return `/api/files/${BUCKET_NAME}/${fileName}`; return `/api/files/${BUCKET_NAME}/${fileName}`;
} }
@@ -19,6 +20,9 @@ export async function uploadFile(formData: FormData) {
throw new Error("No file provided"); throw new Error("No file provided");
} }
// Ensure bucket exists before upload
await initMinio();
const buffer = Buffer.from(await file.arrayBuffer()); const buffer = Buffer.from(await file.arrayBuffer());
const fileName = `${uuidv4()}-${file.name}`; const fileName = `${uuidv4()}-${file.name}`;
@@ -34,9 +38,8 @@ export async function uploadFile(formData: FormData) {
// Return the URL to access the file // Return the URL to access the file
const url = getPublicUrl(fileName); const url = getPublicUrl(fileName);
return { success: true, url, fileName }; return { success: true, url, fileName };
} catch (error) { } catch (error: any) {
console.error("Upload error:", error); console.error("Upload error:", error);
return { success: false, error: "Failed to upload file" }; return { success: false, error: error.message || "Failed to upload file" };
} }
} }

View File

@@ -206,7 +206,7 @@ export default function SetupPage() {
{isUploading ? ( {isUploading ? (
<div className="flex flex-col items-center"> <div className="flex flex-col items-center">
<Loader2 size={48} className="mb-4 text-blue-500 animate-spin" /> <Loader2 size={48} className="mb-4 text-blue-500 animate-spin" />
<p className="text-sm font-medium">Enviando para o MinIO...</p> <p className="text-sm font-medium">Enviando...</p>
</div> </div>
) : formData.logoUrl ? ( ) : formData.logoUrl ? (
<div className="flex flex-col items-center"> <div className="flex flex-col items-center">
@@ -217,7 +217,7 @@ export default function SetupPage() {
<> <>
<CloudUpload size={48} className="mb-4 group-hover:text-blue-500 transition-colors" /> <CloudUpload size={48} className="mb-4 group-hover:text-blue-500 transition-colors" />
<p className="text-sm font-medium">Arraste sua logo ou clique para buscar</p> <p className="text-sm font-medium">Arraste sua logo ou clique para buscar</p>
<p className="text-xs mt-1">PNG, JPG até 5MB (Será salva no MinIO)</p> <p className="text-xs mt-1">PNG, JPG até 5MB</p>
</> </>
)} )}
</div> </div>