import { regex } from "react-admin";

export const E164Regex = /^\+[1-9]\d{1,14}$/;
/**
 * Returns true if the number is a valid E164 number
 */
export const isValidE164Number = (phoneNumber: string) =>
  E164Regex.test(phoneNumber);

/**
 * Given a phone number approximation, will clean out whitespace and punctuation.
 */
export const sanitizeE164Number = (phoneNumber: string) => {
  if (!phoneNumber) return "";
  if (!phoneNumber.trim()) return "";
  const sanitized = phoneNumber
    .replaceAll(/\s/g, "")
    .replaceAll(".", "")
    .replaceAll("-", "")
    .replaceAll("(", "")
    .replaceAll(")", "");

  if (sanitized[0] !== "+") return `+${sanitized}`;
  return sanitized;
};

export const validateE164Number = regex(
  E164Regex,
  "Must start with a + and have no punctunation and no spaces."
);
