Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
3.8 kB
2
Indexable
Never
{% block javascripts %}
    <script>
        const shareMailForm = document.getElementById("shareMailForm");
        const eInput = shareMailForm.querySelector(".share-mail");
        const shareMailSubmit = document.getElementById("shareMail-submit");
        const text = shareMailForm.querySelector(".invalide-email");
        const pattern = /^[^ ]+@[^ ]+\.[a-z]{2,3}$/;

        if (shareMailSubmit) {
            shareMailSubmit.addEventListener("click", function (e) {
                e.preventDefault();
                const pathapi = document.getElementById("shareMail-submit").getAttribute('data-path');
                console.log(pathapi);
                const dataIdValue = document.getElementById("shareMail-submit").dataset.id;
                const email = document.getElementById("email").value;
                let url = '{{ path(pathapi, { 'email': 'email_value', 'id': 'id_value' })|raw }}'
                    .replace('email_value', encodeURIComponent(email))
                    .replace('id_value', encodeURIComponent(dataIdValue));
                if (pathapi ==="pac_pool_mail"){
                    url = '{{ path(pathapi) }}';
                }

                let dataToSend = {
                    email: email
                };
                console.log(url);
                // handle form validation
                shareMailForm.classList.add("error");
                shareMailForm.classList.remove("valid");
                if (eInput.value === "") {
                    text.innerText = "L'e-mail ne peut pas être vide";
                } else if (!eInput.value.match(pattern)) {
                    text.innerText = "Email invalide";
                } else {
                    shareMailForm.classList.replace("error", "valid");
                    text.innerText = "";

                    fetch(url, {
                        method: 'POST',
                        headers: {
                            'Content-Type': 'application/json'
                        },
                        body: JSON.stringify(dataToSend)
                    })
                        .then(response => {
                            if (response.ok && response.status === 200) {
                                console.log("ttttat");
                                // Display the notification toast for a successful response
                                document.querySelector(".PopupMail").setAttribute('data-popup-state', 'closed');
                                document.querySelector(".PopupMail").setAttribute('aria-hidden', 'true');
                                document.querySelector(".toastBlock--email").innerText = eInput.value;
                                document.querySelector(".successShare").style.display = "flex";
                                setTimeout(() => {
                                    document.querySelector(".successShare").style.display = "none";
                                }, 3000);
                            } else {
                                document.querySelector(".PopupMail").setAttribute('data-popup-state', 'closed');
                                document.querySelector(".PopupMail").setAttribute('aria-hidden', 'true');
                                document.querySelector(".failToast").style.display = "flex";
                                setTimeout(() => {
                                    document.querySelector(".failToast").style.display = "none";
                                }, 3000);
                            }
                        })
                        .catch(error => {
                            console.error('Error:', error);
                        });
                }
            });
        }
    </script>

{% endblock %}