src/app/legacy/containers/PageHandlers/withOptimizelyProvider/getOptimizelyUserId/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import onClient from '#lib/utilities/onClient';
import isOperaProxy from '#lib/utilities/isOperaProxy';
import { v4 as uuid } from 'uuid';
import Cookie from 'js-cookie';

const getOptimizelyUserId = () => {
  // Users accessing the site on opera "extreme data saving mode" have the pages rendered by an intermediate service
  // Attempting to track these users is just tracking that proxy, causing all opera mini visitors to have the same id
  if (!onClient() || isOperaProxy()) return null;

  const cookieName = 'ckns_mvt';
  const cookieValue = Cookie.get(cookieName);
  const expires = 365; // expires in 12 Months

  if (!cookieValue) {
    const cookieUuid = uuid();
    Cookie.set(cookieName, cookieUuid, { expires, path: '/', secure: true });
    return cookieUuid;
  }

  return cookieValue;
};

export default getOptimizelyUserId;