Ensure storage buckets exist before uploading avatar/banner and retry on missing bucket
cgen-dcdd4b6eab8a43c78e498f2422ba80cd
This commit is contained in:
parent
261fbc19e2
commit
5d690856af
1 changed files with 26 additions and 2 deletions
|
|
@ -866,6 +866,11 @@ export default function Dashboard() {
|
||||||
type="file"
|
type="file"
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
onChange={async (e) => {
|
onChange={async (e) => {
|
||||||
|
const ensureBuckets = async () => {
|
||||||
|
try {
|
||||||
|
await fetch("/api/storage/ensure-buckets", { method: "POST" });
|
||||||
|
} catch {}
|
||||||
|
};
|
||||||
const file = e.target.files?.[0];
|
const file = e.target.files?.[0];
|
||||||
if (!file || !user) return;
|
if (!file || !user) return;
|
||||||
const storeDataUrl = () =>
|
const storeDataUrl = () =>
|
||||||
|
|
@ -878,10 +883,17 @@ export default function Dashboard() {
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
|
await ensureBuckets();
|
||||||
const path = `${user.id}/avatar-${Date.now()}-${file.name}`;
|
const path = `${user.id}/avatar-${Date.now()}-${file.name}`;
|
||||||
const { error } = await supabase.storage
|
let { error } = await supabase.storage
|
||||||
.from("avatars")
|
.from("avatars")
|
||||||
.upload(path, file, { upsert: true });
|
.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;
|
if (error) throw error;
|
||||||
const { data } = supabase.storage
|
const { data } = supabase.storage
|
||||||
.from("avatars")
|
.from("avatars")
|
||||||
|
|
@ -927,6 +939,11 @@ export default function Dashboard() {
|
||||||
type="file"
|
type="file"
|
||||||
accept="image/*"
|
accept="image/*"
|
||||||
onChange={async (e) => {
|
onChange={async (e) => {
|
||||||
|
const ensureBuckets = async () => {
|
||||||
|
try {
|
||||||
|
await fetch("/api/storage/ensure-buckets", { method: "POST" });
|
||||||
|
} catch {}
|
||||||
|
};
|
||||||
const file = e.target.files?.[0];
|
const file = e.target.files?.[0];
|
||||||
if (!file || !user) return;
|
if (!file || !user) return;
|
||||||
const storeDataUrl = () =>
|
const storeDataUrl = () =>
|
||||||
|
|
@ -939,10 +956,17 @@ export default function Dashboard() {
|
||||||
reader.readAsDataURL(file);
|
reader.readAsDataURL(file);
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
|
await ensureBuckets();
|
||||||
const path = `${user.id}/banner-${Date.now()}-${file.name}`;
|
const path = `${user.id}/banner-${Date.now()}-${file.name}`;
|
||||||
const { error } = await supabase.storage
|
let { error } = await supabase.storage
|
||||||
.from("banners")
|
.from("banners")
|
||||||
.upload(path, file, { upsert: true });
|
.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;
|
if (error) throw error;
|
||||||
const { data } = supabase.storage
|
const { data } = supabase.storage
|
||||||
.from("banners")
|
.from("banners")
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue