Re-implemented getting tasks with the new seperate endpoint
continuous-integration/drone/pr Build is failing Details

This commit is contained in:
kolaente 2020-01-13 22:31:15 +01:00
parent 0f23c4d0f3
commit 9833ef4885
Signed by: konrad
GPG Key ID: F40E70337AB24C9B
6 changed files with 30 additions and 23 deletions

View File

@ -26,4 +26,10 @@ class TaskAPIService extends APIService implements TaskService {
.post('/tasks/${task.id}', body: task.toJSON())
.then((map) => Task.fromJson(map));
}
@override
Future<List<Task>> getAll(int listId) {
return client.get('/lists/$listId/tasks').then(
(list) => convertList(list, (result) => Task.fromJson(result)));
}
}

View File

@ -1,5 +1,4 @@
import 'package:meta/meta.dart';
import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/models/user.dart';
class TaskList {
@ -7,7 +6,6 @@ class TaskList {
final String title, description;
final User owner;
final DateTime created, updated;
final List<Task> tasks;
TaskList(
{@required this.id,
@ -15,8 +13,7 @@ class TaskList {
this.description,
this.owner,
this.created,
this.updated,
this.tasks});
this.updated});
TaskList.fromJson(Map<String, dynamic> json)
: id = json['id'],
@ -24,10 +21,7 @@ class TaskList {
description = json['description'],
title = json['title'],
updated = DateTime.fromMillisecondsSinceEpoch(json['updated']),
created = DateTime.fromMillisecondsSinceEpoch(json['created']),
tasks = (json['tasks'] == null ? [] : json['tasks'] as List<dynamic>)
?.map((taskJson) => Task.fromJson(taskJson))
?.toList();
created = DateTime.fromMillisecondsSinceEpoch(json['created']);
toJSON() {
return {

View File

@ -19,13 +19,14 @@ class ListPage extends StatefulWidget {
class _ListPageState extends State<ListPage> {
TaskList _list;
List<Task> _tasks = [];
List<Task> _loadingTasks = [];
bool _loading = true;
@override
void initState() {
_list = TaskList(
id: widget.taskList.id, title: widget.taskList.title, tasks: []);
id: widget.taskList.id, title: widget.taskList.title);
super.initState();
}
@ -53,7 +54,7 @@ class _ListPageState extends State<ListPage> {
),
body: !this._loading
? RefreshIndicator(
child: _list.tasks.length > 0
child: _tasks.length > 0
? ListView(
padding: EdgeInsets.symmetric(vertical: 8.0),
children: ListTile.divideTiles(
@ -71,7 +72,7 @@ class _ListPageState extends State<ListPage> {
}
List<Widget> _listTasks() {
var tasks = (_list?.tasks?.map(_buildTile) ?? []).toList();
var tasks = (_tasks?.map(_buildTile) ?? []).toList();
tasks.addAll(_loadingTasks.map(_buildLoadingTile));
return tasks;
}
@ -95,6 +96,15 @@ class _ListPageState extends State<ListPage> {
setState(() {
_loading = false;
_list = list;
// Load tasks
VikunjaGlobal.of(context)
.taskService
.getAll(list.id)
.then((tasks) {
setState(() {
_tasks = tasks;
});
});
});
});
}
@ -115,7 +125,7 @@ class _ListPageState extends State<ListPage> {
setState(() => _loadingTasks.add(newTask));
globalState.taskService.add(_list.id, newTask).then((task) {
setState(() {
_list.tasks.add(task);
_tasks.add(task);
});
}).then((_) {
_loadList();

View File

@ -116,7 +116,7 @@ class _NamespacePageState extends State<NamespacePage>
_addList(String name, BuildContext context) {
VikunjaGlobal.of(context)
.listService
.create(widget.namespace.id, TaskList(id: null, title: name, tasks: []))
.create(widget.namespace.id, TaskList(id: null, title: name))
.then((_) {
setState(() {});
_loadLists();

View File

@ -28,7 +28,6 @@ var _lists = {
1: TaskList(
id: 1,
title: 'List 1',
tasks: _tasks.values.toList(),
owner: _users[1],
description: 'A nice list',
created: DateTime.now(),
@ -120,20 +119,13 @@ class MockedListService implements ListService {
class MockedTaskService implements TaskService {
@override
Future delete(int taskId) {
_lists.forEach(
(_, list) => list.tasks.removeWhere((task) => task.id == taskId));
_tasks.remove(taskId);
return Future.value();
}
@override
Future<Task> update(Task task) {
_lists.forEach((_, list) {
if (list.tasks.where((t) => t.id == task.id).length > 0) {
list.tasks.removeWhere((t) => t.id == task.id);
list.tasks.add(task);
}
});
_tasks[task.id] = task;
return Future.value(_tasks[task.id] = task);
}
@ -141,9 +133,13 @@ class MockedTaskService implements TaskService {
Future<Task> add(int listId, Task task) {
var id = _tasks.keys.last + 1;
_tasks[id] = task;
_lists[listId].tasks.add(task);
return Future.value(task);
}
@override
Future<List<Task>> getAll(int listId) {
return Future.value(_tasks.values.toList());
}
}
class MockedUserService implements UserService {

View File

@ -26,6 +26,7 @@ abstract class TaskService {
Future<Task> update(Task task);
Future delete(int taskId);
Future<Task> add(int listId, Task task);
Future<List<Task>> getAll(int listId);
}
abstract class UserService {