From 5f808565f28349459244750d506c9b78e157b41b Mon Sep 17 00:00:00 2001 From: Benimautner Date: Mon, 16 Sep 2024 00:32:27 +0200 Subject: [PATCH] feat: moved only due date task filtering to api, depreciated old filter getting --- lib/api/task_implementation.dart | 11 +++++++++++ lib/pages/landing_page.dart | 34 ++++++++++++-------------------- lib/service/services.dart | 2 ++ 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/lib/api/task_implementation.dart b/lib/api/task_implementation.dart index 8b239ce..a59010d 100644 --- a/lib/api/task_implementation.dart +++ b/lib/api/task_implementation.dart @@ -88,6 +88,7 @@ class TaskAPIService extends APIService implements TaskService { } @override + @deprecated Future?> getByOptions(TaskServiceOptions options) { Map> optionsMap = options.getOptions(); //optionString = "?sort_by[]=due_date&sort_by[]=id&order_by[]=asc&order_by[]=desc&filter_by[]=done&filter_value[]=false&filter_comparator[]=equals&filter_concat=and&filter_include_nulls=false&page=1"; @@ -99,6 +100,16 @@ class TaskAPIService extends APIService implements TaskService { }); } + @override + Future?> getByFilterString(String filterString, [Map>? queryParameters]) { + Map> parameters = {"filter": [filterString], ...?queryParameters}; + print(parameters); + return client.get('/tasks/all', parameters).then((response) { + if (response == null) return null; + return convertList(response.body, (result) => Task.fromJson(result)); + }); + } + @override // TODO: implement maxPages int get maxPages => maxPages; diff --git a/lib/pages/landing_page.dart b/lib/pages/landing_page.dart index 95418fd..4f11d2f 100644 --- a/lib/pages/landing_page.dart +++ b/lib/pages/landing_page.dart @@ -247,39 +247,31 @@ class LandingPageState extends State { if (frontend_settings["filter_id_used_on_overview"] != null) filterId = frontend_settings["filter_id_used_on_overview"]; } + // in case user set a filter id for the landing page in the settings if (filterId != null && filterId != 0) { return global.taskService.getAllByProject(filterId, { "sort_by": ["due_date", "id"], "order_by": ["asc", "desc"], }).then?>((response) => - _handleTaskList(response?.body, showOnlyDueDateTasks)); + _handleTaskList(response?.body)); ; } - - return global.taskService - .getByOptions(TaskServiceOptions(newOptions: [ - TaskServiceOption( - "sort_by", ["due_date", "id"]), - TaskServiceOption( - "order_by", ["asc", "desc"]), - TaskServiceOption("filter_by", "done"), - TaskServiceOption( - "filter_value", "false"), - TaskServiceOption( - "filter_comparator", "equals"), - TaskServiceOption( - "filter_concat", "and"), - ], clearOther: true)) + List filterStrings = ["done = false"]; + if(showOnlyDueDateTasks) { + filterStrings.add("due_date > 0001-01-01 00:00"); + } + return global.taskService.getByFilterString(filterStrings.join(" && "), { + "sort_by": ["due_date", "id"], + "order_by": ["asc", "desc"], + "filter_include_nulls": ["false"], + }) .then?>( - (taskList) => _handleTaskList(taskList, showOnlyDueDateTasks)); + (taskList) => _handleTaskList(taskList)); }); //.onError((error, stackTrace) {print("error");}); } Future _handleTaskList( - List? taskList, bool showOnlyDueDateTasks) { - if (showOnlyDueDateTasks) - taskList?.removeWhere((element) => - element.dueDate == null || element.dueDate!.year == 0001); + List? taskList ) { if (taskList != null && taskList.isEmpty) { setState(() { diff --git a/lib/service/services.dart b/lib/service/services.dart index 7c5f303..3a5fbf5 100644 --- a/lib/service/services.dart +++ b/lib/service/services.dart @@ -171,7 +171,9 @@ abstract class TaskService { Future getAllByProject(int projectId, [Map> queryParameters]); + @deprecated Future?> getByOptions(TaskServiceOptions options); + Future?> getByFilterString(String filterString, [Map> queryParameters]); int get maxPages; }