import { Translation } from "../../i18n/Translation.js"
import Translations from "../../i18n/Translations.js"
import * as emailValidatorLibrary from "email-validator"
import { Validator } from "../Validator"

export default class EmailValidator extends Validator {
    constructor() {
        super("email", "An email adress", "email")
    }

    isValid = (str) => {
        if (str === undefined) {
            return false
        }
        str = str.trim()
        if (str.startsWith("mailto:")) {
            str = str.substring("mailto:".length)
        }
        return emailValidatorLibrary.validate(str)
    }

    reformat = (str) => {
        if (str === undefined) {
            return undefined
        }
        str = str.trim()
        if (str.startsWith("mailto:")) {
            str = str.substring("mailto:".length)
        }
        return str
    }

    getFeedback(s: string): Translation {
        if (s.indexOf("@") < 0) {
            return Translations.t.validation.email.noAt
        }

        return super.getFeedback(s)
    }
}
