fix: report group control failures

This commit is contained in:
Artem Kokos
2026-04-23 20:32:44 +07:00
parent 1c40852ac6
commit 736a61d54b
4 changed files with 93 additions and 15 deletions

View File

@@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import '../app/error_message.dart';
import '../providers/providers.dart';
import '../widgets/group_card.dart';
import 'homes_screen.dart';
@@ -191,8 +192,7 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
),
child: const Icon(Icons.delete, color: Colors.redAccent),
),
confirmDismiss: (_) => _confirmDeleteGroup(context, g),
onDismissed: (_) => _deleteGroup(g['id'].toString()),
confirmDismiss: (_) => _confirmAndDeleteGroup(context, g),
child: GroupCard(group: g),
);
},
@@ -201,12 +201,13 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
);
}
/// Подтверждение удаления группы свайпом
Future<bool> _confirmDeleteGroup(
Future<bool> _confirmAndDeleteGroup(
BuildContext context,
Map<String, dynamic> g,
) async {
return await showDialog<bool>(
final messenger = ScaffoldMessenger.of(context);
final confirmed =
await showDialog<bool>(
context: context,
builder: (ctx) => AlertDialog(
title: const Text('Удалить группу?'),
@@ -227,18 +228,20 @@ class _RemoteScreenState extends ConsumerState<RemoteScreen> {
),
) ??
false;
}
Future<void> _deleteGroup(String id) async {
if (!confirmed) return false;
try {
await ref.read(apiProvider).deleteGroup(id);
await ref.read(apiProvider).deleteGroup(g['id'].toString());
await ref.read(groupsProvider.notifier).refresh();
return true;
} catch (e) {
if (mounted) {
ScaffoldMessenger.of(
context,
).showSnackBar(SnackBar(content: Text('Ошибка удаления: $e')));
messenger.showSnackBar(
SnackBar(content: Text('Ошибка удаления: ${describeLoadError(e)}')),
);
}
return false;
}
}
}