|
|
- 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;
-
- });
|