filterTaskListData function

Future<List<String>> filterTaskListData(
  1. dynamic ref,
  2. List<String> tasksList,
  3. String searchTerm
)

Implementation

Future<List<String>> filterTaskListData(
  var ref,
  List<String> tasksList,
  String searchTerm,
) async {
  List<String> filteredTaskList = [];
  for (final taskListId in tasksList) {
    //Check search param in task list
    final taskListItem = await ref.watch(taskListProvider(taskListId).future);
    if (taskListItem.name().toLowerCase().contains(searchTerm)) {
      filteredTaskList.add(taskListId);
      continue;
    }

    //Check search param in task list items data
    final tasks = await ref.watch(taskItemsListProvider(taskListItem).future);
    for (final openTaskItemId in tasks.openTasks) {
      final openTaskItem = await ref.watch(
        taskItemProvider((taskListId: taskListId, taskId: openTaskItemId))
            .future,
      );
      if (openTaskItem.title().toLowerCase().contains(searchTerm)) {
        filteredTaskList.add(taskListId);
        break;
      }
    }
  }
  return filteredTaskList;
}