export function getGuidedExperienceBreaches()

in src/app/functions/universal/guidedExperienceBreaches.ts [22:94]


export function getGuidedExperienceBreaches(
  subscriberBreaches: SubscriberBreach[],
  emails: string[],
): GuidedExperienceBreaches {
  const guidedExperienceBreaches: GuidedExperienceBreaches = {
    highRisk: {
      ssnBreaches: [],
      creditCardBreaches: [],
      pinBreaches: [],
      bankBreaches: [],
    },
    passwordBreaches: {
      passwords: [],
      securityQuestions: [],
    },
    securityRecommendations: {
      phoneNumber: [],
      emailAddress: [],
      IPAddress: [],
    },
    emails,
  };

  subscriberBreaches.forEach((breach) => {
    // high risks
    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.SSN)) {
      guidedExperienceBreaches.highRisk.ssnBreaches.push(breach);
    }

    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.CreditCard)) {
      guidedExperienceBreaches.highRisk.creditCardBreaches.push(breach);
    }

    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.PIN)) {
      guidedExperienceBreaches.highRisk.pinBreaches.push(breach);
    }

    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.BankAccount)) {
      guidedExperienceBreaches.highRisk.bankBreaches.push(breach);
    }

    // passwords
    // TODO: Add tests when passwords component has been made - MNTOR-1712
    /* c8 ignore start */
    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.Passwords)) {
      guidedExperienceBreaches.passwordBreaches.passwords.push(breach);
    }
    if (
      isUnresolvedDataBreachClass(breach, BreachDataTypes.SecurityQuestions)
    ) {
      guidedExperienceBreaches.passwordBreaches.securityQuestions.push(breach);
    }

    // security recommendations
    // TODO: Add tests when security recs work is merged in
    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.Phone)) {
      guidedExperienceBreaches.securityRecommendations.phoneNumber.push(breach);
    }

    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.Email)) {
      guidedExperienceBreaches.securityRecommendations.emailAddress.push(
        breach,
      );
    }

    if (isUnresolvedDataBreachClass(breach, BreachDataTypes.IP)) {
      guidedExperienceBreaches.securityRecommendations.IPAddress.push(breach);
    }
    /* c8 ignore stop */
  });

  return guidedExperienceBreaches;
}