Skip to content

Commit

Permalink
✨: Complete all sync functions
Browse files Browse the repository at this point in the history
  • Loading branch information
asjqkkkk committed Aug 26, 2019
1 parent 77a9e70 commit 5f0b5a6
Show file tree
Hide file tree
Showing 10 changed files with 295 additions and 53 deletions.
70 changes: 66 additions & 4 deletions lib/config/api_service.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
import 'dart:convert';

import 'package:todo_list/json/all_beans.dart';
import 'package:todo_list/json/task_bean.dart';
export 'package:todo_list/json/all_beans.dart';

import 'api_strategy.dart';
Expand Down Expand Up @@ -313,8 +316,8 @@ class ApiService {
}

///上传一个Task
void postCreateTask({Map<String, String> params, Function success,
Function failed, Function error, CancelToken token}){
void postCreateTask({String token, Function success,
Function failed, Function error, CancelToken cancelToken, TaskBean taskBean}){
ApiStrategy.getInstance().post(
"oneDayTask/createTask",
(data) {
Expand All @@ -325,12 +328,28 @@ class ApiService {
failed(bean);
}
},
params: params,
params: {
'taskName':taskBean.taskName,
'taskType':taskBean.taskType,
'account':taskBean.account,
'taskStatus':'${taskBean.taskStatus}',
'taskDetailNum':'${taskBean.taskDetailNum}',
'overallProgress':'${taskBean.overallProgress}',
'changeTimes':'${taskBean.changeTimes}',
'finishDate':taskBean.finishDate,
'startDate':taskBean.startDate,
'deadLine':taskBean.deadLine,
'taskIconBean':jsonEncode(taskBean.taskIconBean.toMap()),
'detailList':jsonEncode(List.generate(taskBean.detailList.length, (index) {
return taskBean.detailList[index].toMap();
})),
'token':token,
},
errorCallBack: (errorMessage) {
error("上传出错:${errorMessage}");

},
token: token,
token: cancelToken,
);
}

Expand All @@ -354,4 +373,47 @@ class ApiService {
token: token,
);
}

///更新一个task
void postUpdateTask({String token, Function success,
Function failed, Function error, CancelToken cancelToken, TaskBean taskBean}){
postCommon(
params: {
'taskName':taskBean.taskName,
'taskType':taskBean.taskType,
'account':taskBean.account,
'taskStatus':'${taskBean.taskStatus}',
'taskDetailNum':'${taskBean.taskDetailNum}',
'overallProgress':'${taskBean.overallProgress}',
'changeTimes':'${taskBean.changeTimes}',
'finishDate':taskBean.finishDate,
'startDate':taskBean.startDate,
'uniqueId':taskBean.uniqueId,
'deadLine':taskBean.deadLine,
'taskIconBean':jsonEncode(taskBean.taskIconBean.toMap()),
'detailList':jsonEncode(List.generate(taskBean.detailList.length, (index) {
return taskBean.detailList[index].toMap();
})),
'token':token,
},
success: success,
failed: failed,
error: error,
url: "oneDayTask/updateTask",
token: cancelToken,
);
}

///删除一个task
void postDeleteTask({Map<String, String> params, Function success,
Function failed, Function error, CancelToken token}){
postCommon(
params: params,
success: success,
failed: failed,
error: error,
url: "oneDayTask/deleteTask",
token: token,
);
}
}
92 changes: 82 additions & 10 deletions lib/logic/edit_page_task_logic.dart
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:todo_list/config/api_service.dart';
import 'package:todo_list/database/database.dart';
import 'package:todo_list/i10n/localization_intl.dart';
import 'package:todo_list/json/task_bean.dart';
Expand All @@ -9,6 +10,7 @@ import 'package:todo_list/json/theme_bean.dart';
import 'package:todo_list/model/all_model.dart';
import 'package:todo_list/utils/shared_util.dart';
import 'package:todo_list/utils/theme_util.dart';
import 'package:todo_list/widgets/net_loading_widget.dart';

class EditTaskPageLogic {
final EditTaskPageModel _model;
Expand Down Expand Up @@ -218,12 +220,31 @@ class EditTaskPageLogic {
});
return;
}

TaskBean taskBean = await transformDataToBean();
if(taskBean.account == 'default'){
await exitWithSubmitNewTask(taskBean);
} else {
postCreateTask(taskBean);
}
}

Future exitWithSubmitNewTask(TaskBean taskBean,{bool needCancelDialog = false}) async {
await DBProvider.db.createTask(taskBean);
await _model.mainPageModel.logic.getTasks();
_model.refresh();
_model.mainPageModel.refresh();
Navigator.of(_model.context).pop();
if(needCancelDialog) Navigator.of(_model.context).pop();
}

Future exitWhenSubmitOldTask(TaskBean taskBean) async {
DBProvider.db.updateTask(taskBean);
await _model.mainPageModel.logic.getTasks();
_model.mainPageModel.refresh();
if (_model.taskDetailPageModel != null) {
_model.taskDetailPageModel.isExiting = true;
_model.taskDetailPageModel.refresh();
}
Navigator.of(_model.context).popUntil((route) => route.isFirst);
}

//修改旧的任务
Expand All @@ -244,15 +265,66 @@ class EditTaskPageLogic {
TaskBean taskBean = await transformDataToBean(
id: _model.oldTaskBean.id, overallProgress: _getOverallProgress());
taskBean.changeTimes++;
DBProvider.db.updateTask(taskBean);
await _model.mainPageModel.logic.getTasks();
_model.mainPageModel.refresh();
if (_model.taskDetailPageModel != null) {
_model.taskDetailPageModel.isExiting = true;
_model.taskDetailPageModel.refresh();
debugPrint("刷新");
if(taskBean.account == 'default'){
await exitWhenSubmitOldTask(taskBean);
} else {
taskBean.uniqueId == null ? postCreateTask(taskBean, isSubmitOldTask: true) : postUpdateTask(taskBean);
}
Navigator.of(_model.context).popUntil((route) => route.isFirst);
}

///在云端创建一个任务
void postCreateTask(TaskBean taskBean,{bool isSubmitOldTask = false}) async{
showDialog(context: _model.context, builder: (ctx){
return NetLoadingWidget();
});
final token = await SharedUtil.instance.getString(Keys.token);
ApiService.instance.postCreateTask(
success: (UploadTaskBean bean){
taskBean.uniqueId = bean.uniqueId;
taskBean.needUpdateToCloud = 'false';
isSubmitOldTask ? exitWhenSubmitOldTask(taskBean) : exitWithSubmitNewTask(taskBean, needCancelDialog: true);
},
failed: (UploadTaskBean bean){
taskBean.needUpdateToCloud = 'true';
_model.mainPageModel.needSyn = true;
isSubmitOldTask ? exitWhenSubmitOldTask(taskBean) : exitWithSubmitNewTask(taskBean, needCancelDialog: true);
},
error: (msg){
taskBean.needUpdateToCloud = 'true';
_model.mainPageModel.needSyn = true;
isSubmitOldTask ? exitWhenSubmitOldTask(taskBean) : exitWithSubmitNewTask(taskBean, needCancelDialog: true);
},
taskBean: taskBean,
token: token,
cancelToken: _model.cancelToken,
);
}

///在云端更新一个任务
void postUpdateTask(TaskBean taskBean, ) async{
showDialog(context: _model.context, builder: (ctx){
return NetLoadingWidget();
});
final token = await SharedUtil.instance.getString(Keys.token);
ApiService.instance.postUpdateTask(
success: (CommonBean bean){
taskBean.needUpdateToCloud = 'false';
exitWhenSubmitOldTask(taskBean);
},
failed: (CommonBean bean){
taskBean.needUpdateToCloud = 'true';
_model.mainPageModel.needSyn = true;
exitWhenSubmitOldTask(taskBean);
},
error: (msg){
taskBean.needUpdateToCloud = 'true';
_model.mainPageModel.needSyn = true;
exitWhenSubmitOldTask(taskBean);
},
taskBean: taskBean,
token: token,
cancelToken: _model.cancelToken,
);
}

//获取当前任务总进度
Expand Down
55 changes: 55 additions & 0 deletions lib/logic/main_page_logic.dart
Original file line number Diff line number Diff line change
Expand Up @@ -386,5 +386,60 @@ class MainPageLogic {
);
}

///在云端更新一个任务
void postUpdateTask(TaskBean taskBean) async{
final account = await SharedUtil.instance.getString(Keys.account);
if(account == 'default') return;
final token = await SharedUtil.instance.getString(Keys.token);
ApiService.instance.postUpdateTask(
success: (CommonBean bean){
taskBean.needUpdateToCloud = 'false';
DBProvider.db.updateTask(taskBean);
},
failed: (CommonBean bean){
taskBean.needUpdateToCloud = 'true';
_model.needSyn = true;
_model.refresh();
DBProvider.db.updateTask(taskBean);
},
error: (msg){
taskBean.needUpdateToCloud = 'true';
_model.refresh();
DBProvider.db.updateTask(taskBean);
},
taskBean: taskBean,
token: token,
cancelToken: _model.cancelToken,
);
}

///在云端创建一个任务
void postCreateTask(TaskBean taskBean) async{
showDialog(context: _model.context, builder: (ctx){
return NetLoadingWidget();
});
final token = await SharedUtil.instance.getString(Keys.token);
ApiService.instance.postCreateTask(
success: (UploadTaskBean bean){
taskBean.needUpdateToCloud = 'false';
DBProvider.db.updateTask(taskBean);
},
failed: (UploadTaskBean bean){
taskBean.needUpdateToCloud = 'true';
_model.needSyn = true;
_model.refresh();
DBProvider.db.updateTask(taskBean);
},
error: (msg){
taskBean.needUpdateToCloud = 'true';
_model.needSyn = true;
_model.refresh();
DBProvider.db.updateTask(taskBean);
},
taskBean: taskBean,
token: token,
cancelToken: _model.cancelToken,
);
}

}
Loading

0 comments on commit 5f0b5a6

Please sign in to comment.