File:UserDataPlugin.js
/**
* @module Container
* @namespace springroll
*/
(function()
{
var SavedDataHandler = include('springroll.SavedDataHandler');
/**
* @class Container
*/
var plugin = new springroll.ContainerPlugin(40);
plugin.setup = function()
{
/**
* The external handler class, must include `remove`, `write`, `read` methods
* make it possible to use something else to handle the external, default
* is to use cookies/localStorage. See {{#crossLink "springroll.SavedDataHandler"}}{{/crossLink}}
* as an example.
* @property {Object} userDataHandler
* @default springroll.SavedDataHandler
*/
this.userDataHandler = new SavedDataHandler();
};
plugin.open = function()
{
this.client.on(
{
userDataRemove: onUserDataRemove.bind(this),
userDataRead: onUserDataRead.bind(this),
userDataWrite: onUserDataWrite.bind(this),
});
};
/**
* Handler for the userDataRemove event
* @method onUserDataRemove
* @private
*/
var onUserDataRemove = function(event)
{
var client = this.client;
this.userDataHandler.remove(event.data, function()
{
client.send(event.type);
});
};
/**
* Handler for the userDataRead event
* @method onUserDataRead
* @private
*/
var onUserDataRead = function(event)
{
var client = this.client;
this.userDataHandler.read(event.data, function(value)
{
client.send(event.type, value);
});
};
/**
* Handler for the userDataWrite event
* @method onUserDataWrite
* @private
*/
var onUserDataWrite = function(event)
{
var data = event.data;
var client = this.client;
this.userDataHandler.write(data.name, data.value, function()
{
client.send(event.type);
});
};
plugin.teardown = function()
{
this.userDataHandler = null;
};
}());