thinkful-ui
Version:
Shared UI resources for Thinkful.
82 lines (63 loc) • 1.88 kB
JavaScript
;
var _ = require('lodash');
var LEGACY_PLATFORM = 'legacy';
var getHomeConfig = function getHomeConfig(config, user) {
if (user.platform === LEGACY_PLATFORM) {
return config.dashboard;
}
return config.platform;
};
var getLinkSet = function getLinkSet(config, user) {
config = global.__env ? global.__env.config : config;
user = global.__env ? global.__env.user : user;
if (config) {
config = _.mapValues(config, function (link, key) {
return _.assign({}, link);
});
}
var main = [];
var menu = [];
var brandConfig = _.assign({}, config, config.brands ? config.brands[user.brand] : {}); // Shared
var home = {
displayName: 'Overview'
};
_.defaults(home, getHomeConfig(brandConfig, user));
main.push(home);
main.push(brandConfig.qaSessions); // Admin, mentor only
if (/admin|mentor/.test(user.role)) {
menu.push({
displayName: 'Available Students',
host: brandConfig.lark.host,
url: "".concat(brandConfig.lark.url, "/available-students/")
});
} // Mentor only
if (user.role === 'mentor') {
menu.push({
displayName: 'Student Search',
host: brandConfig.lark.host,
url: "".concat(brandConfig.lark.url, "/student-search/")
});
}
menu.push(brandConfig.slack);
menu.push(brandConfig.settings);
menu.push(brandConfig.support);
menu.push(brandConfig.signOut);
main = _.compact(main);
menu = _.compact(menu);
try {
var url = location.toString();
var domain = location.hostname.split('.').slice(-2).join('.');
[].concat(main, menu).forEach(function (item) {
item.active = new RegExp(item.url, 'gi').test(url);
item.external = !new RegExp(domain, 'gi').test(item.url);
});
} catch (e) {}
return {
home: home,
main: main,
menu: menu
};
};
module.exports = {
getLinkSet: getLinkSet
};