define(["sugar-web/activity/activity", "sugar-web/env"], function (activity, env) { 'use strict'; // This is a helper module that allows to persist key/value data // using the standard localStorage object. // // Usage: // ------ // // // 1. Setup: // // dictstore.init(onReadyCallback); // // // 2. Use localStorage directly, and then call save(): // // var value = localStorage['key']; // localStorage['key'] = newValue; // dictstore.save(onSavedCallback); // var dictstore = {}; dictstore.init = function (callback) { if (env.isStandalone()) { // In standalone mode, use localStorage as is. callback(); } else { // In Sugar, set localStorage from the datastore. localStorage.clear(); var onLoaded = function (error, metadata, jsonData) { var data = JSON.parse(jsonData); for (var i in data) { localStorage[i] = data[i]; } callback(); }; activity.getDatastoreObject().loadAsText(onLoaded); } }; // Internally, the key/values are stored as text in the Sugar // datastore, using the JSON format. dictstore.save = function (callback) { if (callback === undefined) { callback = function () {}; } if (env.isStandalone()) { // In standalone mode, use localStorage as is. callback(); } else { var datastoreObject = activity.getDatastoreObject(); var jsonData = JSON.stringify(localStorage); datastoreObject.setDataAsText(jsonData); datastoreObject.save(function (error) { callback(error); }); } }; return dictstore; });