fix: report group control failures
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user