Fix for offline sync

This commit is contained in:
2016-01-30 07:26:13 +08:00
parent f0cf9e6d7b
commit ed4641650b
2 changed files with 61 additions and 44 deletions
+17 -9
View File
@@ -13,22 +13,30 @@ localforage,
localforageBackbone
) {
var List = Backbone.Collection.extend({
var List = Backbone.Collection.extend({
model: Task,
offlineSync: Backbone.localforage.sync("tasks"),
/** switches sync between server and local databases **/
sync: function(){
model: Task,
offlineSync: Backbone.localforage.sync("tasks"),
/** switches sync between server and local databases **/
sync: function(){
//var self = this;
_localforageNamespace = this.offlineSync._localforageNamespace;
_localeForageKeyFn=this.offlineSync._localeForageKeyFn;
localforageKey = this.offlineSync._localeForageKeyFn;
if (window.hackflowyOffline)
return this.offlineSync.apply(this, arguments);
else
return Backbone.sync.apply(this, arguments);
},
},
url: '/tasks'
url: '/tasks'
});
});
// a couple of vars backbone.localforage needs in the sync function
List.prototype.sync.localforage = List.prototype.offlineSync._localeForageKeyFn;
List.prototype.sync._localeForageKeyFn = List.prototype.offlineSync._localeForageKeyFn;
List.prototype.sync._localforageNamespace = List.prototype.offlineSync._localforageNamespace;
return List;
+44 -35
View File
@@ -1,48 +1,57 @@
define(
['backbone',
'localforage',
'localforagebackbone'
'localforage',
'localforagebackbone'
],
function(
Backbone,
localforage,
localforageBackbone
function (
Backbone,
localforage,
localforageBackbone
) {
var TaskModel = Backbone.Model.extend({
var TaskModel = Backbone.Model.extend({
offlineSync: Backbone.localforage.sync('TaskModel'),
/** switches sync between server and local databases **/
sync: function(){
if (window.hackflowyOffline)
return this.offlineSync.apply(this,arguments);
else
return Backbone.sync.apply(this, arguments);
},
offlineSync: Backbone.localforage.sync('TaskModel'),
/** switches sync between server and local databases **/
sync: function () {
defaults: {
parentId: 0,
content: '',
isCompleted: 0,
priority: 0
},
if (window.hackflowyOffline)
return this.offlineSync.apply(this, arguments);
else
return Backbone.sync.apply(this, arguments);
},
toggelCompletedStatus:function(isCompleted){
var prev_isCompleted = isCompleted,
self = this;
this.save({'isCompleted':isCompleted},
{
success:function(){},
error:function(){
//REVERT BACK ON ERROR
self.set({'isCompleted':prev_isCompleted});
}
});
}
defaults: {
parentId: 0,
content: '',
isCompleted: 0,
priority: 0
},
});
toggelCompletedStatus: function (isCompleted) {
var prev_isCompleted = isCompleted,
self = this;
this.save({
'isCompleted': isCompleted
}, {
success: function () {},
error: function () {
//REVERT BACK ON ERROR
self.set({
'isCompleted': prev_isCompleted
});
}
});
}
return TaskModel;
});
// a couple of vars backbone.localforage needs in the sync function
TaskModel.prototype.sync.localforage = TaskModel.prototype.offlineSync._localeForageKeyFn;
TaskModel.prototype.sync._localeForageKeyFn = TaskModel.prototype.offlineSync._localeForageKeyFn;
TaskModel.prototype.sync._localforageNamespace = TaskModel.prototype.offlineSync._localforageNamespace;
return TaskModel;
});