UNPKG

@hhgtech/hhg-components

Version:
233 lines (230 loc) • 9.9 kB
import { c as cookie } from './index-963a1701.js'; import { B as BEARER_TOKEN_COOKIE } from './index-5e947517.js'; import { N as NodeIntentType } from './index-90813715.js'; import Cookies from 'js-cookie'; import { v4 } from 'uuid'; import { isProduction } from './constantsIsProduction.js'; import { domainLocales } from './constantsDomainLocales.js'; const queryKeysJson = [ 'form_submit_meta', 'selected_actions', 'current_selected', 'current_keys', 'current_polls', ]; const queryKeys = [ 'bot_id', 'node_id', // 'account_id', 'action_id', 'action_value', 'current_score', 'gtm_id', 'ga_client_id', 'is_new', 'title_url', 'url', 'window_id', ...queryKeysJson, ]; const overrideParamsByQuery = (params, query) => { const keysSubotMessage = Object.keys(query); keysSubotMessage.map((key) => { const value = query[key]; if (key === 'source') { params.is_new = value === 'first_login'; return; } if (!queryKeys.includes(key)) { return; } /** Parse String to JSON */ if (queryKeysJson.includes(key)) { try { params[key] = JSON.parse(value); } catch (error) { } return; } /** Parse to number */ if (key === 'account_id' || key === 'current_score' || key === 'bot_id') { params[key] = parseInt(value); return; } params[key] = value; }); return params; }; const ssoIntents = (f) => [ { id: v4(), label: JSON.stringify({ title: '', description: '', }), type: NodeIntentType.SSO_INTENT, url: '', }, { id: v4(), label: JSON.stringify({ title: f({ id: 'subot.myHealth.title', defaultMessage: 'My Health', }), description: f({ id: 'subot.myHealth.description', defaultMessage: 'Personal identifiers (like your name) will always be removed to protect your privacy. ', }), }), type: NodeIntentType.SSO_INTENT, url: '/images/subot/my-health.svg', }, { id: v4(), label: JSON.stringify({ title: f({ id: 'subot.saveData.title', defaultMessage: 'Save Data', }), description: f({ id: 'subot.saveData.description', defaultMessage: 'Hellobacsi would like to learn from your data to provide better healthcare for you', }), }), type: NodeIntentType.SSO_INTENT, url: '/images/subot/file-storage.svg', }, { id: v4(), label: JSON.stringify({ title: f({ id: 'subot.productYourIdentifiers.title', defaultMessage: 'Protect your identifiers', }), description: f({ id: 'subot.productYourIdentifiers.description', defaultMessage: 'Personal identifiers (like your name) will always be removed to protect your privacy. ', }), }), type: NodeIntentType.SSO_INTENT, url: '/images/subot/shield.svg', }, ]; function checkUntilFinished(params) { const condition = params.condition; const finished = params.finished; const timeout = params.timeout || 3000; const startTime = new Date().getTime(); const intervalId = setInterval(() => { const endTime = new Date().getTime(); if (endTime - startTime > timeout || condition()) { clearInterval(intervalId); finished(); } }, 300); } const getHhgIdFromCookie = (reqCookie) => { const parsedCookie = cookie.parse(reqCookie || ''); const reqHhgId = parsedCookie['hhg-id']; return reqHhgId || Cookies.get('hhg-id') || ''; }; const getSubotCookieId = (queryCookieId) => { if (queryCookieId) { Cookies.set('hhg-id', queryCookieId); return queryCookieId; } const cookieId = getHhgIdFromCookie(); if (cookieId) { return cookieId; } const newCookieId = v4(); Cookies.set('hhg-id', newCookieId); return newCookieId; }; const getUserIdFromCookie = (reqCookie) => { const parsedCookie = cookie.parse(reqCookie || ''); const reqToken = parsedCookie[BEARER_TOKEN_COOKIE]; const token = reqToken || Cookies.get(BEARER_TOKEN_COOKIE) || ''; try { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload = decodeURIComponent(atob(base64) .split('') .map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }) .join('')); return JSON.parse(jsonPayload).sub; } catch (err) { return ''; } }; const getUserInfoFromCookie = (reqCookie) => { const parsedCookie = cookie.parse(reqCookie || ''); const reqToken = parsedCookie[BEARER_TOKEN_COOKIE]; const token = reqToken || Cookies.get(BEARER_TOKEN_COOKIE) || ''; try { const base64Url = token.split('.')[1]; const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); const jsonPayload = decodeURIComponent(atob(base64) .split('') .map(function (c) { return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2); }) .join('')); const payload = JSON.parse(jsonPayload); return { email: payload.email, id: payload.sub }; } catch (err) { return { email: '', id: 0 }; } }; /** To make sure have the same window id until refresh the page */ const generateWindowId = v4(); const getWindowId = () => { return generateWindowId; }; const getHelloSitesUrl = (locale, ignoreLocal) => { const isLocalhost = ignoreLocal ? false : typeof window !== 'undefined' && (window.location.hostname === 'localhost' || window.location.hostname === '127.0.0.1'); if (isLocalhost) { return 'http://localhost'; // or any other localhost URL you want to use as fallback } return `https://${isProduction ? '' : 'discover.'}${domainLocales[locale]}`; }; const checkMobile = (userAgent) => { const ua = userAgent || (typeof navigator === 'undefined' ? '' : navigator.userAgent); if (/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(ua) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(ua.substring(0, 4))) { return true; } return false; }; const clickAndOpenInNewTab = (url) => { const a = document.createElement('a'); a.href = url; a.target = '_blank'; a.click(); }; const TIME_RESET_RESEND_OTP = 30; const isFakeEmail = (email) => { return (email === null || email === void 0 ? void 0 : email.endsWith('@hhg.com')) || (email === null || email === void 0 ? void 0 : email.endsWith('@facebook.com')); }; function formatUrlWithEncrypedGa(path = '', gaId = '') { if (!path.startsWith('https://') || !gaId) return ''; const url = new URL(path); const searchParams = url.searchParams; if (searchParams.get('hhgclid')) { searchParams.delete('hhgclid'); searchParams.set('hhgclid', gaId); return `${url.origin}${url.pathname}?${searchParams.toString()}`; } return path; } export { TIME_RESET_RESEND_OTP as T, getUserIdFromCookie as a, getSubotCookieId as b, getUserInfoFromCookie as c, getWindowId as d, checkUntilFinished as e, checkMobile as f, getHelloSitesUrl as g, clickAndOpenInNewTab as h, formatUrlWithEncrypedGa as i, isFakeEmail as j, getHhgIdFromCookie as k, overrideParamsByQuery as o, ssoIntents as s };