You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.1 KiB
JavaScript
60 lines
2.1 KiB
JavaScript
define(function () {
|
|
var module = {};
|
|
|
|
module.create = function (UserList, Title, cfg, Cryptpad) {
|
|
var exp = {};
|
|
|
|
exp.update = function (shjson) {
|
|
// Extract the user list (metadata) from the hyperjson
|
|
var json = (!shjson || typeof shjson !== "string") ? "" : JSON.parse(shjson);
|
|
var titleUpdated = false;
|
|
var metadata;
|
|
if (Array.isArray(json)) {
|
|
metadata = json[3] && json[3].metadata;
|
|
} else {
|
|
metadata = json.metadata;
|
|
}
|
|
if (typeof metadata === "object") {
|
|
if (Cryptpad) {
|
|
if (typeof(metadata.type) === 'undefined') {
|
|
// initialize pad type by location.pathname
|
|
metadata.type = Cryptpad.getAppType();
|
|
}
|
|
} else {
|
|
console.log("Cryptpad should exist but it does not");
|
|
}
|
|
if (metadata.users) {
|
|
var userData = metadata.users;
|
|
// Update the local user data
|
|
UserList.addToUserData(userData);
|
|
}
|
|
if (metadata.defaultTitle) {
|
|
Title.updateDefaultTitle(metadata.defaultTitle);
|
|
}
|
|
if (typeof metadata.title !== "undefined") {
|
|
Title.updateTitle(metadata.title || Title.defaultTitle);
|
|
titleUpdated = true;
|
|
}
|
|
if (metadata.slideOptions && cfg.slideOptions) {
|
|
cfg.slideOptions(metadata.slideOptions);
|
|
}
|
|
if (metadata.color && cfg.slideColors) {
|
|
cfg.slideColors(metadata.color, metadata.backColor);
|
|
}
|
|
if (typeof(metadata.palette) !== 'undefined' && cfg.updatePalette) {
|
|
cfg.updatePalette(metadata.palette);
|
|
}
|
|
}
|
|
if (!titleUpdated) {
|
|
Title.updateTitle(Title.defaultTitle);
|
|
}
|
|
};
|
|
|
|
return exp;
|
|
};
|
|
|
|
return module;
|
|
});
|
|
|
|
|