UNPKG

thinkful-ui

Version:

Shared UI resources for Thinkful.

82 lines (63 loc) 1.88 kB
"use strict"; 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 };