update newsletter subscription ffor new shopify api

This commit is contained in:
Lucy Cifferello
2025-04-09 16:49:35 -04:00
parent ba3739eb54
commit e5b0c62a3b

View File

@@ -2,14 +2,15 @@
/* CONTACT POST */ /* CONTACT POST */
/********************************************/ /********************************************/
const emailError = document.getElementById("emailError") const emailError = document.getElementById("emailError");
const emailSuccess = document.getElementById("emailSuccess") const emailSuccess = document.getElementById("emailSuccess");
const errorMsg = "Something's not working. If you keep getting this error, try us at <a href='https://t.me/start9_lab' rel='noopener noreferrer' target='_blank'>Telegram</a> instead." const errorMsg =
"Something's not working. If you keep getting this error, try us on <a href='https://matrix.to/#/#general:start9.me' rel='noopener noreferrer' target='_blank'>Matrix</a> instead.";
function showSuccess(message) { function showSuccess(message) {
hideError(); hideError();
emailSuccess.classList.add("form-alert--visible"); emailSuccess.classList.add("form-alert--visible");
emailSuccess.innerHTML = message emailSuccess.innerHTML = message;
} }
function hideSuccess() { function hideSuccess() {
@@ -27,12 +28,14 @@ function hideError() {
} }
function clear() { function clear() {
document.getElementById("subscribeForm").reset() document.getElementById("subscribeForm").reset();
} }
document.getElementById("contactSubmit").addEventListener("click", function (e) { document
.getElementById("contactSubmit")
.addEventListener("click", function (e) {
const fromEmail = document.getElementById("fromEmail"); const fromEmail = document.getElementById("fromEmail");
e.preventDefault() e.preventDefault();
if ( if (
/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test( /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/.test(
fromEmail.value fromEmail.value
@@ -41,11 +44,33 @@ document.getElementById("contactSubmit").addEventListener("click", function (e)
hideError(); hideError();
try { try {
var body = { const query = `
customer: { mutation customerCreate($input: CustomerInput!) {
customerCreate(input: $input) {
customer {
id
email
emailMarketingConsent {
marketingState
consentUpdatedAt
marketingOptInLevel
}
}
userErrors {
field
message
}
}
}
`;
const variables = {
input: {
email: fromEmail.value, email: fromEmail.value,
accepts_marketing: true, emailMarketingConsent: {
verified_email: true, marketingState: "SUBSCRIBED",
consentUpdatedAt: new Date().toISOString(),
marketingOptInLevel: "SINGLE_OPT_IN",
},
}, },
}; };
fetch("https://start9.com/api/subscribe", { fetch("https://start9.com/api/subscribe", {
@@ -53,27 +78,33 @@ document.getElementById("contactSubmit").addEventListener("click", function (e)
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",
}, },
body: JSON.stringify(body), body: JSON.stringify({ query, variables }),
}).then((response) => { })
clear() .then((response) => response.json())
if (response.ok) { .then((data) => {
showSuccess("Thanks for subscribing!"); if (data.data.customerCreate.userErrors.length) {
console.error(
"Error creating customer:",
data.data.customerCreate.userErrors
);
if (
data.data.customerCreate.userErrors[0].message ===
"Email has already been taken"
) {
showError("Email already subscribed");
} else { } else {
if (response.status === 422) { showError("Error subscribing. Please contact support.");
showError("Already subscribed!")
} else {
console.error(`Error code: ${response.status} - Details: ${response.statusText}`)
showError(errorMsg);
} }
} else {
showSuccess("Thanks for subscribing!");
} }
}); });
} catch (error) { } catch (error) {
clear() clear();
console.error(error) console.error(error);
showError(errMsg); showError(errMsg);
} }
} else { } else {
showError("Sorry, you must use a valid email address."); showError("Sorry, you must use a valid email address.");
} }
}); });