removeCronTasks function

Future<void> removeCronTasks(
  1. List<String> ids, {
  2. String? dir,
  3. List<CronTask>? sessionTasks,
})

Remove tasks by id. No-op if none match.

Implementation

Future<void> removeCronTasks(
  List<String> ids, {
  String? dir,
  List<CronTask>? sessionTasks,
}) async {
  if (ids.isEmpty) return;

  // Sweep session store first.
  if (dir == null && sessionTasks != null) {
    final idSet = ids.toSet();
    final removedCount = sessionTasks.where((t) => idSet.contains(t.id)).length;
    sessionTasks.removeWhere((t) => idSet.contains(t.id));
    if (removedCount == ids.length) return;
  }

  final idSet = ids.toSet();
  final tasks = await readCronTasks(dir: dir);
  final remaining = tasks.where((t) => !idSet.contains(t.id)).toList();
  if (remaining.length == tasks.length) return;
  await writeCronTasks(remaining, dir: dir);
}