Ensure storage buckets exist before uploading avatar/banner and retry on missing bucket

cgen-dcdd4b6eab8a43c78e498f2422ba80cd
This commit is contained in:
Builder.io 2025-10-18 01:39:05 +00:00
parent 261fbc19e2
commit 5d690856af

View file

@ -866,6 +866,11 @@ export default function Dashboard() {
type="file"
accept="image/*"
onChange={async (e) => {
const ensureBuckets = async () => {
try {
await fetch("/api/storage/ensure-buckets", { method: "POST" });
} catch {}
};
const file = e.target.files?.[0];
if (!file || !user) return;
const storeDataUrl = () =>
@ -878,10 +883,17 @@ export default function Dashboard() {
reader.readAsDataURL(file);
});
try {
await ensureBuckets();
const path = `${user.id}/avatar-${Date.now()}-${file.name}`;
const { error } = await supabase.storage
let { error } = await supabase.storage
.from("avatars")
.upload(path, file, { upsert: true });
if (error && /bucket/i.test(error?.message || "")) {
await ensureBuckets();
({ error } = await supabase.storage
.from("avatars")
.upload(path, file, { upsert: true }));
}
if (error) throw error;
const { data } = supabase.storage
.from("avatars")
@ -927,6 +939,11 @@ export default function Dashboard() {
type="file"
accept="image/*"
onChange={async (e) => {
const ensureBuckets = async () => {
try {
await fetch("/api/storage/ensure-buckets", { method: "POST" });
} catch {}
};
const file = e.target.files?.[0];
if (!file || !user) return;
const storeDataUrl = () =>
@ -939,10 +956,17 @@ export default function Dashboard() {
reader.readAsDataURL(file);
});
try {
await ensureBuckets();
const path = `${user.id}/banner-${Date.now()}-${file.name}`;
const { error } = await supabase.storage
let { error } = await supabase.storage
.from("banners")
.upload(path, file, { upsert: true });
if (error && /bucket/i.test(error?.message || "")) {
await ensureBuckets();
({ error } = await supabase.storage
.from("banners")
.upload(path, file, { upsert: true }));
}
if (error) throw error;
const { data } = supabase.storage
.from("banners")