department-of-veterans-affairs/vets-website

View on GitHub
src/platform/mhv/hooks/usePrintTitle.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import { useEffect } from 'react';
import { formatDateShort } from '../../utilities/date';

const usePrintTitle = (baseTitle, userDetails, dob, updatePageTitle) => {
  useEffect(
    () => {
      const { first, last, suffix } = userDetails;
      const name = [first, last, suffix]
        .filter(part => part !== undefined && part !== null)
        .join(' ')
        .trim();
      // eslint-disable-next-line no-irregular-whitespace
      const pageTitle = `${name}${name ? '\u2003' : ''}​DOB:​${formatDateShort(
        new Date(dob),
      )}`;

      const beforePrintHandler = () => {
        updatePageTitle(pageTitle);
      };

      const afterPrintHandler = () => {
        updatePageTitle(baseTitle);
      };

      window.addEventListener('beforeprint', beforePrintHandler);
      window.addEventListener('afterprint', afterPrintHandler);

      return () => {
        window.removeEventListener('beforeprint', beforePrintHandler);
        window.removeEventListener('afterprint', afterPrintHandler);
      };
    },
    [baseTitle, userDetails, dob, updatePageTitle],
  );
};

export default usePrintTitle;