diff --git a/public/javascripts/collections/list.js b/public/javascripts/collections/list.js index 1fd7ba4..a2467e5 100644 --- a/public/javascripts/collections/list.js +++ b/public/javascripts/collections/list.js @@ -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; diff --git a/public/javascripts/models/task.js b/public/javascripts/models/task.js index 0f0d318..ac48cff 100644 --- a/public/javascripts/models/task.js +++ b/public/javascripts/models/task.js @@ -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; });