send changes tag ok

This commit is contained in:
life
2015-02-07 00:59:06 +08:00
parent 68c668514b
commit 8b329de3bb
3 changed files with 106 additions and 4 deletions

43
node_modules/api.js generated vendored
View File

@@ -2,6 +2,7 @@ var db = require('db');
var async = require('async'); var async = require('async');
var User = require('user'); var User = require('user');
var Note = require('note'); var Note = require('note');
var Tag = require('tag');
var Notebook = require('notebook'); var Notebook = require('notebook');
var Common = require('common'); var Common = require('common');
var Tags = db.tags; var Tags = db.tags;
@@ -494,6 +495,48 @@ var Api = {
}); });
}, },
// 添加标签
addTag: function(title, callback) {
var me = this;
needle.post(me.getUrl('tag/addTag'), {tag: title}, {}, function(err, resp) {
if(err) {
return callback && callback(false);
}
var ret = resp.body;
log('add tag ret ==========');
log(ret);
if(Common.isOk(ret)) {
// 以后不要再发了
Tag.setNotDirty(title);
callback && callback(ret);
} else {
callback && callback(false);
}
});
},
// 删除标签
deleteTag: function(tag, callback) {
var me = this;
needle.post(me.getUrl('tag/deleteTag'), data, {tag: tag.Tag, usn: tag.Usn}, function(err, resp) {
if(err) {
return callback && callback(false);
}
var ret = resp.body;
log('delete tag ret ===========');
log(ret);
if(Common.isOk(ret)) {
// 以后不要再发了
Tag.setNotDirty(tag.Tag);
callback && callback(ret);
} else {
// 出错了也不要发了, 万一是网络原因呢?
if(ret.Msg == 'conflict') {
Tag.setNotDirty(tag.Tag);
}
callback && callback(false);
}
});
},
test: function() { test: function() {
log("??"); log("??");

41
node_modules/sync.js generated vendored
View File

@@ -404,6 +404,8 @@ var Sync = {
}, true); }, true);
} else { } else {
// 本地有, 不用操作 // 本地有, 不用操作
Tag.setNotDirty(tag.Tag);
return canCall();
} }
}); });
})(tag); })(tag);
@@ -632,6 +634,9 @@ var Sync = {
} else { } else {
// newNote.Usn > User.getLastSyncUsn + 1, 表示服务器端在本次同步后, sendChanges之前有更新 // newNote.Usn > User.getLastSyncUsn + 1, 表示服务器端在本次同步后, sendChanges之前有更新
// 那么, 还需要来一次incrSync, 之后 // 那么, 还需要来一次incrSync, 之后
if(User.getLastSyncUsn() > usn) { // 添加标签时如果标签已经存在, 则返回的是旧的
return;
}
me._needIncrSyncAgain = true; me._needIncrSyncAgain = true;
} }
} }
@@ -758,7 +763,42 @@ var Sync = {
// 发送标签改变 // 发送标签改变
sendTagChanges: function(callback) { sendTagChanges: function(callback) {
log('send note changes'); log('send note changes');
var me = this;
// 获取所有笔记本的更改
Tag.getDirtyTags(function(tags) {
log('dirty tags');
log(tags);
if(!tags) {
callback && callback(); callback && callback();
} else {
// 调api, 所有执行后再callback();
// 一个一个同步执行, 因为要有
async.eachSeries(tags, function(tag, cb) {
if(tag.IsDirty) {
// 添加
Api.addTag(tag.Tag, function(newTag) {
if(!Common.isOk(newTag)) {
return cb();
}
me._syncInfo.note.changeAdds.push(newTag);
me.checkNeedIncSyncAgain(newTag.Usn);
cb();
});
} else if(note.LocalIsDelete) {
// 删除, 不管它了
Api.deleteTag(tag, function(ret) {
if(Common.isOk(ret)) {
me.checkNeedIncSyncAgain(ret.Usn);
}
return cb();
});
} else {
}
}, function() {
callback && callback();
});
}
});
}, },
sendChanges: function() { sendChanges: function() {
@@ -766,7 +806,6 @@ var Sync = {
log('send changes before...') log('send changes before...')
// 先处理冲突, 可以同时进行 // 先处理冲突, 可以同时进行
me.fixConflicts(function() { me.fixConflicts(function() {
return;
// send changes // send changes
log('send changes'); log('send changes');
me._initSyncInfo(); // 重新初始化[] me._initSyncInfo(); // 重新初始化[]

22
node_modules/tag.js generated vendored
View File

@@ -84,14 +84,34 @@ var Tag = {
}, },
getTag: function(title, callback) { getTag: function(title, callback) {
userId = User.getCurActiveUserId(); var userId = User.getCurActiveUserId();
Tags.findOne({UserId: userId, Tag: title}, function(err, tag) { Tags.findOne({UserId: userId, Tag: title}, function(err, tag) {
if(err || !tag) { if(err || !tag) {
return callback && callback(false); return callback && callback(false);
} }
callback && callback(tag); callback && callback(tag);
}); });
},
// 服务器上更新过来, 已经存在了
setNotDirty: function(title) {
var me = this;
var userId = User.getCurActiveUserId();
Tags.update({UserId: userId, Title: title}, {$set: {IsDirty: false, UpdatedTime: new Date()}}, function() {
});
},
// send changes to server
getDirtyTags: function(callback) {
var me = this;
userId = User.getCurActiveUserId();
Tags.find({UserId: userId, IsDirty: true}, function(err, tags) {
if(err || !tags) {
return callback && callback(false);
} }
callback && callback(tags);
});
},
/* /*
// 添加多个标签 // 添加多个标签
addTags: function(titles) { addTags: function(titles) {