import 'package:vikunja_app/api/client.dart'; import 'package:vikunja_app/api/response.dart'; import 'package:vikunja_app/api/service.dart'; import 'package:vikunja_app/models/bucket.dart'; import 'package:vikunja_app/service/services.dart'; class BucketAPIService extends APIService implements BucketService { BucketAPIService(Client client) : super(client); @override Future add(int projectId, Bucket bucket) { return client .put('/projects/$projectId/buckets', body: bucket.toJSON()) .then((response) { if (response == null) return null; return Bucket.fromJSON(response.body); }); } @override Future delete(int projectId, int bucketId) { return client.delete('/projects/$projectId/buckets/$bucketId'); } /* Not implemented in the Vikunja API @override Future get(int listId, int bucketId) { return client .get('/lists/$listId/buckets/$bucketId') .then((response) => Bucket.fromJSON(response.body)); } */ @override Future getAllByList(int projectId, [Map>? queryParameters]) { return client.get('/projects/$projectId/buckets', queryParameters).then( (response) => response != null ? new Response( convertList(response.body, (result) => Bucket.fromJSON(result)), response.statusCode, response.headers) : null); } @override // TODO: implement maxPages int get maxPages => maxPages; @override Future update(Bucket bucket) { return client .post('/projects/${bucket.projectId}/buckets/${bucket.id}', body: bucket.toJSON()) .then((response) { if (response == null) return null; return Bucket.fromJSON(response.body); }); } }