blob: d6f864b6464d4c37be5b6f471ab689ca8b36e6d7 [file] [log] [blame]
var $ = require('./util/jquery');
var message = require('./components/message');
var vanadiumWrapperDefault = require('./vanadium-wrapper');
var defineClass = require('./util/define-class');
var Maps = require('./components/maps');
var TravelSync = require('./travelsync');
var Identity = require('./identity');
var Travel = defineClass({
publics: {
error: function (err) {
this.maps.message(message.error(err.toString()));
},
info: function (info) {
this.maps.message(message.info(info));
}
},
init: function (opts) {
opts = opts || {};
var vanadiumWrapper = opts.vanadiumWrapper || vanadiumWrapperDefault;
var travel = this;
this.sync = new TravelSync();
var reportError = $.proxy(this, 'error');
vanadiumWrapper.init(opts.vanadium).then(
function(wrapper) {
wrapper.onCrash.add(reportError);
var identity = new Identity(wrapper.getAccountName());
identity.mountName = makeMountName(identity);
travel.sync.start(identity.mountName, wrapper).catch(reportError);
}, reportError);
this.maps = new Maps(opts.maps);
var $domRoot = opts.domRoot? $(opts.domRoot) : $('body');
$domRoot.append(travel.maps.$);
}
});
function makeMountName(id) {
// TODO: first-class app-wide rather than siloed by account
return 'users/' + id.username + '/travel/' + id.deviceName;
}
module.exports = Travel;