toggleTodo method

Future<void> toggleTodo(
  1. String id
)

Implementation

Future<void> toggleTodo(String id) async {
  final repository = ref.read(todoRepositoryProvider);
  final result = await repository.toggleTodo(id);

  result.fold(
    (failure) => ref.read(sideEffectProvider.notifier).notify(
          SideEffect.failure(
            title: 'Update Failed',
            message: failure.toString(),
          ),
        ),
    (_) {
      final todos = ref.read(todosProvider);
      final todo = todos.firstWhere((t) => t.id == id);
      ref.read(todosProvider.notifier).updateTodo(
            todo.copyWith(isCompleted: !todo.isCompleted),
          );
    },
  );
}