Munça da UI de inicio | escovagem semanal adicionada | quantidade de videos assistidos | todos os videos na nuvem | possibilidade de continuar o video de onde parou
This commit is contained in:
@@ -33,34 +33,29 @@ class _SettingsBodyState extends State<SettingsBody> {
|
||||
context,
|
||||
title: 'Apagar dados da conta',
|
||||
message:
|
||||
'Isso remove permanentemente seu perfil, crianças cadastradas e '
|
||||
'fotos. Essa ação não pode ser desfeita. Deseja continuar?',
|
||||
'Isso remove permanentemente a sua conta, perfil, crianças '
|
||||
'cadastradas e fotos — incluindo o login, permitindo criar uma '
|
||||
'nova conta com o mesmo e-mail depois. Essa ação não pode ser '
|
||||
'desfeita. Deseja continuar?',
|
||||
confirmLabel: 'Apagar',
|
||||
confirmColor: _accentPink,
|
||||
);
|
||||
|
||||
if (confirmed != true) return;
|
||||
|
||||
final uid = supabase.auth.currentUser?.id;
|
||||
if (uid == null) return;
|
||||
|
||||
setState(() => _deletingAccount = true);
|
||||
try {
|
||||
await supabase.from('children').delete().eq('owner_id', uid);
|
||||
|
||||
// O Supabase não avisa quando uma política de RLS bloqueia silenciosamente
|
||||
// uma operação: sem `.select()` para devolver as linhas apagadas não há
|
||||
// como distinguir "0 linhas existiam" de "sem permissão para apagar".
|
||||
final deletedProfile = await supabase
|
||||
.from('profiles')
|
||||
.delete()
|
||||
.eq('id', uid)
|
||||
.select('id');
|
||||
|
||||
if (deletedProfile.isEmpty) {
|
||||
// A remoção de `auth.users` exige a service role key, que o app nunca
|
||||
// deve carregar — por isso corre numa Edge Function (server-side); ver
|
||||
// supabase/functions/delete-account. Sem isto, apagar só as linhas de
|
||||
// `profiles`/`children` deixava o e-mail "ocupado" no Supabase Auth,
|
||||
// impedindo criar uma nova conta com o mesmo e-mail.
|
||||
final response = await supabase.functions.invoke('delete-account');
|
||||
final data = response.data;
|
||||
final errorMessage = (data is Map) ? data['error']?.toString() : null;
|
||||
if (response.status != 200 || errorMessage != null) {
|
||||
throw StateError(
|
||||
'A base de dados recusou apagar o perfil (sem política de RLS '
|
||||
'para DELETE). Os dados não foram removidos.',
|
||||
errorMessage ?? 'Erro ao apagar conta (status ${response.status})',
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user