From 7914aed51b51f9402c820d2f43dce90783be628c Mon Sep 17 00:00:00 2001 From: life Date: Sun, 25 Jan 2015 23:18:48 +0800 Subject: [PATCH] send changes, notebook.delete [ok] --- node_modules/api.js | 22 ++++++++++++++++++++-- node_modules/notebook.js | 20 ++++++++++++++++++-- node_modules/sync.js | 6 ++++++ public/js/app/notebook.js | 12 ++++-------- 4 files changed, 48 insertions(+), 12 deletions(-) diff --git a/node_modules/api.js b/node_modules/api.js index 0598d64d..79c75356 100644 --- a/node_modules/api.js +++ b/node_modules/api.js @@ -284,18 +284,36 @@ var Api = { }, // 删除 - deleteNotebook: function(serverNotebookId, callback) { + deleteNotebook: function(notebook, callback) { var me = this; - var data = {notebookId: serverNotebookId}; + var data = {notebookId: notebook.ServerNotebookId, usn: notebook.Usn}; + log('delete notebook'); needle.post(me.getUrl('notebook/deleteNotebook'), data, {}, function(err, resp) { if(err) { return callback(false); } var ret = resp.body; + log('delete notebook ret'); + log(ret); if(Common.isOk(ret)) { + // 以后不要再发了 + Notebook.setNotDirty(notebook.NotebookId); callback(ret); } else { callback(false); + try { + log('delete notebook conflict'); + // 代表冲突了, 那么本地的删除无效, 设为IsDirty为false, 不删除 + // 待以后同步 + if(ret.Msg == 'conflict') { + log('delete notebook conflict: setNotDirtyNotDelete'); + Notebook.setNotDirtyNotDelete(notebook.NotebookId); + } else { + log('delete notebook conflict: setNotDirty'); + Notebook.setNotDirty(notebook.NotebookId); + } + + } catch(e) {} } }); } diff --git a/node_modules/notebook.js b/node_modules/notebook.js index adc647f4..08f788f7 100644 --- a/node_modules/notebook.js +++ b/node_modules/notebook.js @@ -68,7 +68,7 @@ var Notebook = { // 排序好之后返回 getNotebooks: function(callback) { var userId = User.getCurActiveUserId(); - NB.find({UserId: userId}, function(err, notebooks) { + NB.find({UserId: userId, $or: [{LocalIsDelete : { $exists : false }}, {LocalIsDelete: false}] }, function(err, notebooks) { if(err) { log(err); return callback && callback(false); @@ -138,7 +138,14 @@ var Notebook = { // 删除笔记本 deleteNotebook: function(notebookId, callback) { - + NB.update({NotebookId: notebookId}, {$set: {LocalIsDelete: true, IsDirty: true, UpdatedTime: new Date()}}, function(err, n) { + callback(true); + }); + /* + NB.remove({NotebookId: notebookId}, function(err, n) { + callback(); + }); + */ }, // 重新统计笔记本的笔记数据 @@ -354,6 +361,15 @@ var Notebook = { // 处理删除的 notebookWeb.deleteSync(notebookSyncInfo.deletes); + }, + + // 在send delete笔记时成功 + setNotDirty: function(notebookId) { + NB.update({NotebookId: notebookId}, {$set:{IsDirty: false}}) + }, + // 在send delete笔记时有冲突 + setNotDirtyNotDelete: function(notebookId) { + NB.update({NotebookId: notebookId}, {$set:{IsDirty: false, LocalIsDelete: false}}) } }; module.exports = Notebook; \ No newline at end of file diff --git a/node_modules/sync.js b/node_modules/sync.js index 7275b81b..6dd0a2b8 100644 --- a/node_modules/sync.js +++ b/node_modules/sync.js @@ -456,6 +456,12 @@ var Sync = { if(!newNotebook) { return cb(); } + + // 删除操作 + if(notebook.LocalIsDelete) { + return cb(); + } + // 更新成功, 是否有冲突? // newNotebook是服务器上的笔记本 // 没有更新成功 diff --git a/public/js/app/notebook.js b/public/js/app/notebook.js index 5b8307c9..804e374f 100644 --- a/public/js/app/notebook.js +++ b/public/js/app/notebook.js @@ -862,14 +862,10 @@ Notebook.deleteNotebook = function(target) { if(!notebookId) { return; } - - ajaxGet("/notebook/deleteNotebook", {notebookId: notebookId}, function(ret) { - if(ret.Ok) { - self.deleteNotebookFromTree(notebookId); - } else { - alert(ret.Msg); - } - }); + + NotebookService.deleteNotebook(notebookId, function() { + self.deleteNotebookFromTree(notebookId); + }) }; Notebook.deleteNotebookFromTree = function(notebookId) { var self = this;