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.
112 lines
3.7 KiB
JavaScript
112 lines
3.7 KiB
JavaScript
define(function () {
|
|
var module = {};
|
|
|
|
module.create = function (info, onLocal, Cryptget, Cryptpad) {
|
|
var exp = {};
|
|
|
|
var userData = exp.userData = {};
|
|
var userList = exp.userList = info.userList;
|
|
var myData = exp.myData = {};
|
|
exp.myUserName = info.myID;
|
|
exp.myNetfluxId = info.myID;
|
|
|
|
var network = Cryptpad.getNetwork();
|
|
|
|
var parsed = Cryptpad.parsePadUrl(window.location.href);
|
|
var appType = parsed ? parsed.type : undefined;
|
|
|
|
var addToUserData = exp.addToUserData = function(data) {
|
|
var users = userList.users;
|
|
for (var attrname in data) { userData[attrname] = data[attrname]; }
|
|
|
|
if (users && users.length) {
|
|
for (var userKey in userData) {
|
|
if (users.indexOf(userKey) === -1) {
|
|
delete userData[userKey];
|
|
}
|
|
}
|
|
}
|
|
|
|
if(userList && typeof userList.onChange === "function") {
|
|
userList.onChange(userData);
|
|
}
|
|
};
|
|
|
|
exp.getToolbarConfig = function () {
|
|
return {
|
|
data: userData,
|
|
list: userList,
|
|
userNetfluxId: exp.myNetfluxId
|
|
};
|
|
};
|
|
|
|
var setName = exp.setName = function (newName, cb) {
|
|
if (typeof(newName) !== 'string') { return; }
|
|
var myUserNameTemp = newName.trim();
|
|
if(myUserNameTemp.length > 32) {
|
|
myUserNameTemp = myUserNameTemp.substr(0, 32);
|
|
}
|
|
exp.myUserName = myUserNameTemp;
|
|
myData = {};
|
|
myData[exp.myNetfluxId] = {
|
|
name: exp.myUserName,
|
|
uid: Cryptpad.getUid(),
|
|
avatar: Cryptpad.getAvatarUrl(),
|
|
profile: Cryptpad.getProfileUrl(),
|
|
edPublic: Cryptpad.getProxy().edPublic
|
|
};
|
|
addToUserData(myData);
|
|
Cryptpad.setAttribute('username', exp.myUserName, function (err) {
|
|
if (err) {
|
|
console.log("Couldn't set username");
|
|
console.error(err);
|
|
return;
|
|
}
|
|
if (typeof cb === "function") { cb(); }
|
|
});
|
|
};
|
|
|
|
exp.getLastName = function ($changeNameButton, isNew) {
|
|
Cryptpad.getLastName(function (err, lastName) {
|
|
if (err) {
|
|
console.log("Could not get previous name");
|
|
console.error(err);
|
|
return;
|
|
}
|
|
// Update the toolbar list:
|
|
// Add the current user in the metadata
|
|
if (typeof(lastName) === 'string') {
|
|
setName(lastName, onLocal);
|
|
} else {
|
|
myData[exp.myNetfluxId] = {
|
|
name: "",
|
|
uid: Cryptpad.getUid(),
|
|
avatar: Cryptpad.getAvatarUrl(),
|
|
profile: Cryptpad.getProfileUrl(),
|
|
edPublic: Cryptpad.getProxy().edPublic
|
|
};
|
|
addToUserData(myData);
|
|
onLocal();
|
|
$changeNameButton.click();
|
|
}
|
|
if (isNew && appType) {
|
|
Cryptpad.selectTemplate(appType, info.realtime, Cryptget);
|
|
}
|
|
});
|
|
};
|
|
|
|
Cryptpad.onDisplayNameChanged(function (newName) {
|
|
setName(newName, onLocal);
|
|
});
|
|
|
|
network.on('reconnect', function (uid) {
|
|
exp.myNetfluxId = uid;
|
|
exp.setName(exp.myUserName);
|
|
});
|
|
|
|
return exp;
|
|
};
|
|
|
|
return module;
|
|
});
|