Refactor avatar deletion logic

This commit is contained in:
gpt-engineer-app[bot]
2025-10-12 14:22:27 +00:00
parent 3a38b47108
commit 8d814d43a1
2 changed files with 72 additions and 0 deletions

View File

@@ -102,6 +102,42 @@ serve(async (req) => {
console.error('Error deleting user roles:', rolesError);
}
// Get profile to check for avatar before deletion
const { data: profile } = await supabaseAdmin
.from('profiles')
.select('avatar_image_id')
.eq('user_id', user.id)
.maybeSingle();
// Delete avatar from Cloudflare Images if it exists
if (profile?.avatar_image_id) {
const cloudflareAccountId = Deno.env.get('VITE_CLOUDFLARE_ACCOUNT_ID');
const cloudflareApiToken = Deno.env.get('CLOUDFLARE_API_TOKEN');
if (cloudflareAccountId && cloudflareApiToken) {
try {
console.log(`Deleting avatar image: ${profile.avatar_image_id}`);
const deleteResponse = await fetch(
`https://api.cloudflare.com/client/v4/accounts/${cloudflareAccountId}/images/v1/${profile.avatar_image_id}`,
{
method: 'DELETE',
headers: {
'Authorization': `Bearer ${cloudflareApiToken}`,
},
}
);
if (!deleteResponse.ok) {
console.error('Failed to delete avatar from Cloudflare:', await deleteResponse.text());
} else {
console.log('Avatar deleted from Cloudflare successfully');
}
} catch (avatarError) {
console.error('Error deleting avatar from Cloudflare:', avatarError);
}
}
}
// Delete profile
const { error: profileError } = await supabaseAdmin
.from('profiles')

View File

@@ -75,6 +75,42 @@ serve(async (req) => {
.delete()
.eq('user_id', deletion.user_id);
// Get profile to check for avatar before deletion
const { data: profile } = await supabaseAdmin
.from('profiles')
.select('avatar_image_id')
.eq('user_id', deletion.user_id)
.maybeSingle();
// Delete avatar from Cloudflare Images if it exists
if (profile?.avatar_image_id) {
const cloudflareAccountId = Deno.env.get('VITE_CLOUDFLARE_ACCOUNT_ID');
const cloudflareApiToken = Deno.env.get('CLOUDFLARE_API_TOKEN');
if (cloudflareAccountId && cloudflareApiToken) {
try {
console.log(`Deleting avatar image: ${profile.avatar_image_id}`);
const deleteResponse = await fetch(
`https://api.cloudflare.com/client/v4/accounts/${cloudflareAccountId}/images/v1/${profile.avatar_image_id}`,
{
method: 'DELETE',
headers: {
'Authorization': `Bearer ${cloudflareApiToken}`,
},
}
);
if (!deleteResponse.ok) {
console.error('Failed to delete avatar from Cloudflare:', await deleteResponse.text());
} else {
console.log('Avatar deleted from Cloudflare successfully');
}
} catch (avatarError) {
console.error('Error deleting avatar from Cloudflare:', avatarError);
}
}
}
// Delete profile
await supabaseAdmin
.from('profiles')