department-of-veterans-affairs/vets-website

View on GitHub
src/applications/mhv/shared/hooks/usePrintTitle.jsx

Summary

Maintainability
A
0 mins
Test Coverage
import { useEffect } from 'react';

const usePrintTitle = (
  baseTitle,
  userDetails,
  dob,
  dateFormat,
  updatePageTitle,
) => {
  useEffect(
    () => {
      const { first, last, suffix } = userDetails;
      const name = `${first} ${last} ${suffix}`
        .replace(/\s*(undefined|null)\s*/g, '')
        .trim();
      const pageTitle = `${baseTitle} | ${name} | ${dateFormat(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, dateFormat, updatePageTitle],
  );
};

export default usePrintTitle;