1
0
mirror of https://github.com/go-vikunja/app synced 2024-06-02 02:29:47 +00:00

cleaned code. moved get/[set]DisplayDoneTasks to global

This commit is contained in:
benimautner 2022-04-12 21:03:16 +02:00
parent a2ad0a52e1
commit 3202fc6bdb
7 changed files with 63 additions and 56 deletions

View File

@ -1,12 +1,14 @@
import 'dart:async';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:vikunja_app/api/client.dart';
import 'package:vikunja_app/api/service.dart';
import 'package:vikunja_app/models/list.dart';
import 'package:vikunja_app/service/services.dart';
class ListAPIService extends APIService implements ListService {
ListAPIService(Client client) : super(client);
FlutterSecureStorage _storage;
ListAPIService(Client client, FlutterSecureStorage storage) : _storage = storage, super(client);
@override
Future<TaskList> create(namespaceId, TaskList tl) {
@ -49,4 +51,22 @@ class ListAPIService extends APIService implements ListService {
.post('/lists/${tl.id}', body: tl.toJSON())
.then((map) => TaskList.fromJson(map));
}
@override
Future<String> getDisplayDoneTasks(int listId) {
return _storage.read(key: "display_done_tasks_list_$listId").then((value)
{
if(value == null) {
// TODO: implement default value
setDisplayDoneTasks(listId, "1");
return Future.value("1");
}
return value;
});
}
@override
void setDisplayDoneTasks(int listId, String value) {
_storage.write(key: "display_done_tasks_list_$listId", value: value);
}
}

View File

@ -1,10 +1,7 @@
import 'dart:async';
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:vikunja_app/api/client.dart';
import 'package:vikunja_app/api/service.dart';
import 'package:vikunja_app/models/list.dart';
import 'package:vikunja_app/models/task.dart';
import 'package:vikunja_app/service/services.dart';

View File

@ -43,7 +43,7 @@ class VikunjaGlobalState extends State<VikunjaGlobal> {
TaskService get taskService => new TaskAPIService(client);
ListService get listService => new ListAPIService(client);
ListService get listService => new ListAPIService(client, _storage);
@override
void initState() {
@ -76,14 +76,6 @@ class VikunjaGlobalState extends State<VikunjaGlobal> {
});
}
void setSetting(String key, String value) async{
await _storage.write(key: key, value: value);
}
Future<String> getSetting(String key) async {
return _storage.read(key: key);
}
void logoutUser(BuildContext context) {
_storage.deleteAll().then((_) {

View File

@ -20,28 +20,22 @@ class ListPage extends StatefulWidget {
class _ListPageState extends State<ListPage> {
TaskList _list;
List<Task> _loadingTasks = [];
bool _loading = true;
Future<String> display_done_tasks;
bool bool_display_done;
int list_id;
bool displayDoneTasks;
int listId;
@override
void initState() {
_list = TaskList(
id: widget.taskList.id, title: widget.taskList.title, tasks: []);
list_id = _list.id;
listId = _list.id;
Future.delayed(Duration.zero, (){
updateDisplayDoneTasks().then((value) => setState((){bool_display_done = value == "1";}));
VikunjaGlobal.of(context).listService.getDisplayDoneTasks(listId)
.then((value) => setState((){displayDoneTasks = value == "1";}));
});
super.initState();
}
Future<String> updateDisplayDoneTasks() async {
display_done_tasks = VikunjaGlobal.of(context).getSetting("display_done_tasks_list_$list_id");
return display_done_tasks;
}
@override
void didChangeDependencies() {
_loadList();
@ -64,8 +58,8 @@ class _ListPageState extends State<ListPage> {
list: _list,
))).whenComplete(() {
setState(() {this._loading = true;});
updateDisplayDoneTasks().then((value) {
bool_display_done = value == "1";
VikunjaGlobal.of(context).listService.getDisplayDoneTasks(listId).then((value) {
displayDoneTasks = value == "1";
_loadList();
setState(() => this._loading = false);
});
@ -111,7 +105,7 @@ class _ListPageState extends State<ListPage> {
.then((list) {
setState(() {
_loading = false;
if(bool_display_done != null && !bool_display_done)
if(displayDoneTasks != null && !displayDoneTasks)
list.tasks.removeWhere((element) => element.done);
_list = list;
});

View File

@ -19,32 +19,22 @@ class _ListEditPageState extends State<ListEditPage> {
final _formKey = GlobalKey<FormState>();
bool _loading = false;
String _title, _description;
Future<String> display_done_tasks;
bool display_bool;
int list_id;
bool displayDoneTasks;
int listId;
@override
void initState(){
list_id = widget.list.id;
listId = widget.list.id;
super.initState();
}
Future<String> updateDisplayDoneTasks() async {
display_done_tasks = VikunjaGlobal.of(context).getSetting("display_done_tasks_list_$list_id");
display_done_tasks.then((value) {
if(value == null) {
VikunjaGlobal.of(context).setSetting("display_done_tasks_list_$list_id", "1");
updateDisplayDoneTasks();
}
});
return display_done_tasks;
}
@override
Widget build(BuildContext ctx) {
if(display_bool == null)
updateDisplayDoneTasks().then(
(value) => setState(() => display_bool = value == "1"));
if(displayDoneTasks == null)
VikunjaGlobal.of(context).listService.getDisplayDoneTasks(listId).then(
(value) => setState(() => displayDoneTasks = value == "1"));
else
log("Display_bool: " + displayDoneTasks?.toString());
return Scaffold(
appBar: AppBar(
title: Text('Edit List'),
@ -96,17 +86,13 @@ class _ListEditPageState extends State<ListEditPage> {
),
Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),
child: FutureBuilder<String>(
future: display_done_tasks,
builder: (context, snapshot) =>
snapshot.hasData ?
child: displayDoneTasks != null ?
CheckboxListTile(
value: display_bool,
value: displayDoneTasks,
title: Text("Show done tasks"),
onChanged: (value) {
VikunjaGlobal.of(context).setSetting("display_done_tasks_list_$list_id", value == false ? "0" : "1");
//updateDisplayDoneTasks().then((value) =>
setState(() => display_bool = value);
VikunjaGlobal.of(context).listService.setDisplayDoneTasks(listId, value == false ? "0" : "1");
setState(() => displayDoneTasks = value);
},
)
: ListTile(
@ -122,9 +108,7 @@ class _ListEditPageState extends State<ListEditPage> {
),
),
title: Text("Show done task"),
)
)
,),
),),
Builder(
builder: (context) => Padding(
padding: EdgeInsets.symmetric(vertical: 10.0),

View File

@ -115,6 +115,17 @@ class MockedListService implements ListService {
throw Exception('TaskList ${tl.id} does not exists');
return Future.value(_lists[tl.id] = tl);
}
@override
Future<String> getDisplayDoneTasks(int listId) {
// TODO: implement getDisplayDoneTasks
throw UnimplementedError();
}
@override
void setDisplayDoneTasks(int listId, String value) {
// TODO: implement setDisplayDoneTasks
}
}
class MockedTaskService implements TaskService {
@ -144,6 +155,12 @@ class MockedTaskService implements TaskService {
_lists[listId].tasks.add(task);
return Future.value(task);
}
@override
Future<List<Task>> get(int taskId) {
// TODO: implement get
throw UnimplementedError();
}
}
class MockedUserService implements UserService {

View File

@ -20,9 +20,12 @@ abstract class ListService {
Future<TaskList> create(int namespaceId, TaskList tl);
Future<TaskList> update(TaskList tl);
Future delete(int listId);
Future<String> getDisplayDoneTasks(int listId);
void setDisplayDoneTasks(int listId, String value);
}
abstract class TaskService {
Future<List<Task>> get(int taskId);
Future<Task> update(Task task);
Future delete(int taskId);
Future<Task> add(int listId, Task task);