@xo-union/tk-component-header-nav
Version:
37 lines (34 loc) • 1.6 kB
JavaScript
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property");
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
_Object$defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/set"));
var _react = require("react");
var _useIsomorphicLayoutEffectCjs = require("../../utils/use-isomorphic-layout-effect.cjs.js");
const DO_NOT_RENDER_IN_PAGES = new _set.default(['', 'dashboard', 'paper', 'knotrewards']);
const DISMISSED_SESSION_NAME = 'tk-header-rewards-bar-dismissed';
const useRewardsBarVisibility = _ref => {
let {
member,
location
} = _ref;
const [isEnabled, setIsEnabled] = (0, _react.useState)(false);
(0, _useIsomorphicLayoutEffectCjs.useLayoutEffect)(() => {
// Member's data
const isLoggedIn = !!member;
const hasRewardsProgram = member === null || member === void 0 ? void 0 : member.in_rewards_program;
// Page validation
const pathname = (location === null || location === void 0 ? void 0 : location.pathname) ?? '';
const [, currentPageSlug] = pathname.split('/', 2);
const isPageValid = !DO_NOT_RENDER_IN_PAGES.has(currentPageSlug);
// Session storage validation
const isDismissed = sessionStorage.getItem(DISMISSED_SESSION_NAME) === 'true';
setIsEnabled(!isDismissed && isPageValid && isLoggedIn && !!hasRewardsProgram);
}, [member, location]);
return isEnabled;
};
var _default = useRewardsBarVisibility;
exports.default = _default;
;