@twreporter/universal-header
Version:
Universal header of TWReporter sites
201 lines (198 loc) • 11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.checkReferrer = exports.checkPathnameParent = void 0;
exports.getActionLinks = getActionLinks;
exports.getBookmarksLink = getBookmarksLink;
exports.getChannelLinks = getChannelLinks;
exports.getFooterLinks = getFooterLinks;
exports.getLink = getLink;
exports.getLoginLink = getLoginLink;
exports.getLogoLink = getLogoLink;
exports.getMemberLink = getMemberLink;
exports.getMemberLinks = getMemberLinks;
exports.getMyReadingLink = getMyReadingLink;
exports.getSearchLink = getSearchLink;
exports.getSocialMediaLinks = getSocialMediaLinks;
exports.getTabBarLinks = getTabBarLinks;
var _actions = require("../constants/actions");
var _footer = require("../constants/footer");
var _socialMedia = require("../constants/social-media");
var _channels = _interopRequireDefault(require("../constants/channels"));
var _channelsNew = _interopRequireDefault(require("../constants/channels-new"));
var _externalLinks = _interopRequireDefault(require("../constants/external-links"));
var _requestOrigins = _interopRequireDefault(require("@twreporter/core/lib/constants/request-origins"));
var _releaseBranch = _interopRequireDefault(require("@twreporter/core/lib/constants/release-branch"));
var _featureFlag = require("@twreporter/core/lib/constants/feature-flag");
var _forEach = _interopRequireDefault(require("lodash/forEach"));
var _reduce = _interopRequireDefault(require("lodash/reduce"));
var _split = _interopRequireDefault(require("lodash/split"));
var _indexOf = _interopRequireDefault(require("lodash/indexOf"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); } // import { CHANNEL_KEY, CHANNEL_PATH } from '../constants/channels'
// @twreporter
// lodash
var _ = {
forEach: _forEach["default"],
reduce: _reduce["default"],
split: _split["default"],
indexOf: _indexOf["default"]
};
var _ref = _featureFlag.LAWMAKER ? _channelsNew["default"] : _channels["default"],
CHANNEL_KEY = _ref.CHANNEL_KEY,
CHANNEL_PATH = _ref.CHANNEL_PATH;
var originsForClient = _requestOrigins["default"].forClientSideRendering;
/**
* @param {string} domain - one of 'account', 'main', 'support', or 'api'
* @returns {Object}
*/
function getOriginsByType(domain) {
var baseURL = {};
_.forEach(_releaseBranch["default"], function (branch) {
baseURL[branch] = originsForClient[branch][domain];
});
return baseURL;
}
var accountsBaseURL = getOriginsByType('accounts');
var mainBaseURL = getOriginsByType('main');
// const support = getOriginsByType('support')
var defaultReleaseBranch = _releaseBranch["default"].master;
var defaultIsExternal = false;
function __getLink(isExternal, releaseBranch, baseURL, path) {
var target = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '_self';
if (isExternal) {
if (baseURL.hasOwnProperty(releaseBranch)) {
return {
to: baseURL[releaseBranch] + path,
isExternal: isExternal,
target: target
};
}
}
return {
to: path,
isExternal: isExternal
};
}
function __getExternalLinks() {
return Object.assign({}, _externalLinks["default"]);
}
var __composeExternalLink = function __composeExternalLink(link) {
var target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '_self';
return {
to: link,
isExternal: true,
target: target
};
};
var checkReferrer = exports.checkReferrer = function checkReferrer() {
var referrer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
try {
var url = new URL(referrer);
return url.origin === mainBaseURL[releaseBranch];
} catch (err) {
return false;
}
};
var checkPathnameParent = exports.checkPathnameParent = function checkPathnameParent() {
var pathname = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var parent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return _.indexOf(_.split(pathname, '/'), parent) === 1;
};
function getLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
return __getLink(isExternal, releaseBranch, mainBaseURL, path);
}
function getLoginLink() {
var releaseBranch = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultReleaseBranch;
return {
to: accountsBaseURL[releaseBranch] + '/signin',
isExternal: true
};
}
function getMemberLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return __getLink(isExternal, releaseBranch, mainBaseURL, '/account');
}
function getBookmarksLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading/saved');
}
function getMyReadingLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading');
}
function getSearchLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return __getLink(isExternal, releaseBranch, mainBaseURL, '/search');
}
function getLogoLink() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return __getLink(isExternal, releaseBranch, mainBaseURL, '');
}
function getActionLinks() {
var _ref2;
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return _ref2 = {}, _defineProperty(_ref2, _actions.ACTION_KEY.support, __composeExternalLink(__getExternalLinks().monthlyDonation)), _defineProperty(_ref2, _actions.ACTION_KEY.newsLetter, __getLink(isExternal, releaseBranch, mainBaseURL, '/account/email-subscription')), _ref2;
}
function getFooterLinks() {
var _ref3;
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return _ref3 = {}, _defineProperty(_ref3, _footer.FOOTER_KEY.foundation, __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.foundation])), _defineProperty(_ref3, _footer.FOOTER_KEY.aboutUs, __getLink(true, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.aboutUs], '_blank')), _defineProperty(_ref3, _footer.FOOTER_KEY.influenceReport, __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[_footer.FOOTER_KEY.influenceReport])), _defineProperty(_ref3, _footer.FOOTER_KEY.openLab, __composeExternalLink(__getExternalLinks().openLab, '_blank')), _defineProperty(_ref3, _footer.FOOTER_KEY.publicationAndMerchandise, __composeExternalLink(__getExternalLinks().publicationAndMerchandise, '_blank')), _ref3;
}
function getMemberLinks() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return _.reduce(_footer.MEMBER_ORDER, function (res, memberKey) {
res[memberKey] = __getLink(isExternal, releaseBranch, mainBaseURL, _footer.FOOTER_PATH[memberKey]);
return res;
}, {});
}
function getSocialMediaLinks() {
var externalLinks = __getExternalLinks();
return _.reduce(_socialMedia.SOCIAL_MEDIA_KEY, function (res, key) {
var link = externalLinks[key];
if (link) {
res[key] = __composeExternalLink(link, '_blank');
}
return res;
}, {});
}
function getChannelLinks() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
var links = _.reduce(CHANNEL_PATH, function (res, path, key) {
var link = __getLink(isExternal, releaseBranch, mainBaseURL, path);
res[key] = link;
return res;
}, {});
links[CHANNEL_KEY.kidsReporter] = __composeExternalLink(__getExternalLinks().kidsReporter, '_blank');
if (_featureFlag.LAWMAKER) {
links[CHANNEL_KEY.lawmaker] = __composeExternalLink(__getExternalLinks().lawmaker, '_blank');
}
return links;
}
function getTabBarLinks() {
var isExternal = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultIsExternal;
var releaseBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : defaultReleaseBranch;
return {
home: __getLink(isExternal, releaseBranch, mainBaseURL, ''),
latest: __getLink(isExternal, releaseBranch, mainBaseURL, '/latest'),
topic: __getLink(isExternal, releaseBranch, mainBaseURL, '/topics'),
myreading: __getLink(isExternal, releaseBranch, mainBaseURL, '/myreading')
};
}