sync 问题 leanote#103, 点击sync图标不sync问题, 因为当前没有笔记, 不能保存

This commit is contained in:
life
2015-05-04 23:39:40 +08:00
parent bfcf3a39a9
commit beb1dc123e
9 changed files with 104 additions and 29 deletions

1
src/node_modules/api.js generated vendored
View File

@@ -390,7 +390,6 @@ var Api = {
console.log(data);
needle.post(me.getUrl('notebook/addNotebook'), data, {}, function(err, resp) {
me.checkError(err, resp);
if(err) {
return callback(false);
}

17
src/node_modules/note.js generated vendored
View File

@@ -304,6 +304,12 @@ var Note = {
});
});
},
// 是新的, 又是deleted的, 则删除之
deleteLocalNote: function(noteId, callback) {
Notes.remove({NoteId: noteId}, function() {
callback && callback();
});
},
// 彻底删除笔记, 如果有tags, 则需要更新tags's count
deleteTrash: function(noteId, callback) {
var me = this;
@@ -325,15 +331,15 @@ var Note = {
}
});
/*
Notes.update({NoteId: noteId}, {$set: {IsDirty: true, LocalIsDelete: true}}, function(err, n) {
if(err || !n) {
callback(false);
} else {
callback(true);
}
});
*/
},
// 移动note
@@ -624,11 +630,14 @@ var Note = {
var me = this;
note.InitSync = true; // 刚同步完, 表示content, images, attach没有同步
note.IsDirty = false;
note.LocalIsDelete = false;
note.IsTrash = false;
note.ServerNoteId = note.NoteId;
note.NoteId = Common.objectId();
note.LocalIsDelete = false;
console.error('add note force' + note.Title + Common.goNowToDate(note.CreatedTime));
console.error('add note' + note.Title + Common.goNowToDate(note.CreatedTime));
note.CreatedTime = Common.goNowToDate(note.CreatedTime);
note.UpdatedTime = Common.goNowToDate(note.UpdatedTime);

20
src/node_modules/notebook.js generated vendored
View File

@@ -112,6 +112,7 @@ var Notebook = {
},
// 新建笔记本
// 这里, 之前有个大BUG, pull过来后添加到tree上设为IsNew, 导致添加大量重复的notebook
addNotebook: function(notebookId, title, parentNotebookId, callback) {
var notebook = {
Title: title,
@@ -135,6 +136,7 @@ var Notebook = {
});
},
// 修改笔记本标题
updateNotebookTitle: function(notebookId, title, callback) {
NB.update({NotebookId: notebookId},
{$set:
@@ -200,6 +202,13 @@ var Notebook = {
*/
},
// 删除本地的笔记本, 是New又是Delete
deleteLocalNotebook: function(notebookId, callback) {
NB.remove({NotebookId: notebookId}, function(err, n) {
callback && callback();
});
},
// addNote, 删除note, 移动note
// 重新统计笔记本的笔记数据
reCountNotebookNumberNotes: function(notebookId) {
@@ -298,6 +307,10 @@ var Notebook = {
notebook.CreatedTime = Common.goNowToDate(notebook.CreatedTime);
notebook.UpdatedTime = Common.goNowToDate(notebook.UpdatedTime);
notebook.IsDirty = false;
notebook.LocalIsNew = false;
notebook.LocalIsDelete = false;
NB.insert(notebook, function (err, newDoc) { // Callback is optional
if(err) {
console.log(err);
@@ -342,6 +355,7 @@ var Notebook = {
// 更新笔记本, NotebookId可能也要更改
// notebook是服务器传过来的
updateNotebookForceForSendChange: function(notebookId, notebook, callback) {
// console.log('updateNotebookForceForSendChange notebook是服务器传过来的');
var me = this;
notebook.IsDirty = false;
notebook.LocalIsNew = false;
@@ -350,7 +364,11 @@ var Notebook = {
me.getNotebookIdByServerNotebookId(notebook.ParentNotebookId, function(parentNotebookId) {
notebook.ParentNotebookId = parentNotebookId;
NB.update({NotebookId: notebookId}, {$set: notebook}, {}, function (err, n) {
// console.log(notebook2);
// notebook2.Title += " H-";
// multi, 因为历史原因, 导致大量重复notebookId的元素
NB.update({NotebookId: notebookId}, {$set: notebook}, {multi: true}, function (err, n) {
// console.log('updateNotebookForceForSendChange end' + notebookId + ' ' + n);
if(err) {
console.log(err);
callback && callback(false);

62
src/node_modules/sync.js generated vendored
View File

@@ -185,7 +185,7 @@ var Sync = {
Notebook.getNotebookByServerNotebookId(notebookId, function(notebookLocal) {
// 2.1 本地没有, 表示是新建
if(!notebookLocal) {
console.log('add: ...')
console.log('add addNotebookForce...')
// TODO
Notebook.addNotebookForce(notebook, function(notebook) {
me._syncInfo.notebook.adds.push(notebook);
@@ -697,6 +697,15 @@ var Sync = {
// 一个一个同步执行, 因为要有
async.eachSeries(notebooks, function(notebook, cb) {
var api = Api.updateNotebook;
// 本地既是新的, 又是删除的, 删除本地的, 不要同步
// 5/4
if(notebook.LocalIsNew && notebook.LocalIsDelete) {
console.log('笔记本既是新的, 又是删除的, 不同步, 直接删除本地的');
Notebook.deleteLocalNotebook(notebook.NotebookId);
return cb();
}
if(notebook.LocalIsNew) {
api = Api.addNotebook;
} else if(notebook.LocalIsDelete) {
@@ -793,27 +802,43 @@ var Sync = {
// 调api, 所有执行后再callback();
// 一个一个同步执行, 因为要有
async.eachSeries(notes, function(note, cb) {
if(note.LocalIsNew && !note.IsTrash) { // 是新的, 且不是trash
// 添加, newNote的返回不会很多值(server端)
Api.addNote(note, function(newNote) {
if(!Common.isOk(newNote)) {
return cb();
}
if(note.LocalIsNew) {
// 是新的, 且不是trash和删除的
if(!note.IsTrash && !note.LocalIsDelete) {
// 添加, newNote的返回不会很多值(server端)
Api.addNote(note, function(newNote) {
if(!Common.isOk(newNote)) {
return cb();
}
newNote.ServerNoteId = newNote.NoteId;
newNote.NoteId = note.NoteId;
newNote.ServerNoteId = newNote.NoteId;
newNote.NoteId = note.NoteId;
newNote.IsBlog = note.IsBlog; // 前端要用
me._syncInfo.note.changeAdds.push(newNote);
newNote.IsBlog = note.IsBlog; // 前端要用
me._syncInfo.note.changeAdds.push(newNote);
Note.updateNoteForceForSendChange(newNote, true);
Note.updateNoteForceForSendChange(newNote, true);
// 这里
me.checkNeedIncSyncAgain(newNote.Usn);
// 这里
me.checkNeedIncSyncAgain(newNote.Usn);
cb();
});
} else if(note.LocalIsDelete) {
cb();
});
}
// 5/4
// 本地已经删除了, 则彻底删除之
else if(note.LocalIsDelete) {
console.log('既是新的, 又是删除的, 则删除笔记的');
Note.deleteLocalNote(note.NoteId);
return cb();
}
// isTrash, 不同步, 不删除
else {
console.log('既是新的, 又是trash的, 不要同步');
return cb();
}
}
else if(note.LocalIsDelete) {
// 删除, 不管它了
// TODO
Api.deleteTrash(note, function(ret) {
@@ -822,7 +847,8 @@ var Sync = {
}
return cb();
});
} else {
}
else {
// 更新
Api.updateNote(note, function(ret) {
if(!Common.isOk(ret)) {

1
src/node_modules/web.js generated vendored
View File

@@ -153,7 +153,6 @@ var Web = {
updateNotebookNumberNotes: function(notebookId, count) {
var me = this;
me.Notebook.updateNotebookNumberNotes(notebookId, count);
}
};
module.exports = Web;