Skip to content

Commit

Permalink
HTML5 localStorage as a fallback for HTML5 WebSQL
Browse files Browse the repository at this point in the history
  • Loading branch information
David Francisco committed May 18, 2011
1 parent 506684e commit 74b096c
Showing 1 changed file with 23 additions and 11 deletions.
34 changes: 23 additions & 11 deletions public/javascripts/backbone/sync.js
Expand Up @@ -15,9 +15,19 @@
* Synchronization works both ways (supports multiple clients)
**/

// Which DB do you want to use today?
persistence.store.websql.config(persistence, "webapp", 'database', 5 * 1024 * 1024);
// persistence.store.memory.config(persistence, 'database', 5 * 1024 * 1024, '1.0');
var supports_webdatabase = !!window.openDatabase
var using_localstorage = !supports_webdatabase

if (supports_webdatabase) {
// Empty methods which would be implemented by persistence.store.memory
persistence.loadFromLocalStorage = function(callback) { callback(); };
persistence.saveToLocalStorage = function(callback) { callback(); };
// Use WebSQL
persistence.store.websql.config(persistence, "webapp", 'database', 5 * 1024 * 1024);
}
else { // Use localStorage
persistence.store.memory.config(persistence, 'database', 5 * 1024 * 1024, '1.0');
}

/* */ // APPLICATION SPECIFIC CODE
/* */
Expand Down Expand Up @@ -59,14 +69,14 @@ persistence.debug = true;
var session = persistence;

persistence.schemaSync(function(tx) { // First sync
// persistence.loadFromLocalStorage(function() { // if using localStorage
persistence.loadFromLocalStorage(function() { // if using localStorage
ItemEntity.syncAll(persistence, server_sync_uri,
persistence.sync.preferRemoteConflictHandler, function() {
console.log('First sync!');
}, function() {
console.log('Error syncing to server!');
});
// });
});
});


Expand Down Expand Up @@ -96,27 +106,29 @@ function sync(callback, item) {

// Load elements from localStorage (if used) and sync with server (if dontSync == false)
function load(callback, dontSync) {
// persistence.loadFromLocalStorage(function() { // if using localStorage
// console.log("All data loaded from localStorage!");
persistence.loadFromLocalStorage(function() { // if using localStorage
if (using_localstorage)
console.log("All data loaded from localStorage!");
if (window.navigator.onLine && !dontSync) {
sync(callback); // Sync to server
} else {
callback();
}
// });
});
}

// Save elements to localStorage (if used) and sync with server (if dontSync == false)
function save(callback, item, dontSync) {
// persistence.saveToLocalStorage(function() { // if using localStorage
// console.log("All data saved to localStorage!");
persistence.saveToLocalStorage(function() { // if using localStorage
if (using_localstorage)
console.log("All data saved to localStorage!");
if (window.navigator.onLine && !dontSync) {
sync(callback, item); // Sync to server
} else {
persistence.flush(); // Flush the new changes
callback();
}
// });
});
}

function readOne(model, success) {
Expand Down

0 comments on commit 74b096c

Please sign in to comment.