mirror of
https://github.com/wassname/HackFlowy.git
synced 2026-06-27 16:00:04 +08:00
Fix for offline sync
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user