addTodo method

Future<void> addTodo(
  1. String title
)

Side Effect Action: Uses sideEffectProvider for non-interactive feedback.

Implementation

Future<void> addTodo(String title) async {
  final repository = ref.read(todoRepositoryProvider);
  final newTodo = Todo(
    id: DateTime.now().millisecondsSinceEpoch.toString(),
    title: title,
  );

  final result = await repository.addTodo(newTodo);

  result.fold(
    (failure) => ref.read(sideEffectProvider.notifier).notify(
          SideEffect.failure(
            title: 'Creation Failed',
            message: failure.toString(),
          ),
        ),
    (_) {
      ref.read(todosProvider.notifier).addTodo(newTodo);
      ref.read(navigationProvider).pop<void>(); // Context-less pop
      ref.read(sideEffectProvider.notifier).notify(
            const SideEffect.success(
              title: 'Task Created',
              message: 'Your new task has been added successfully.',
            ),
          );
    },
  );
}