Closes #170
This commit is contained in:
parent
20c90187cb
commit
38567045ad
4 changed files with 90 additions and 60 deletions
19
app/dist/scripts/app.js
vendored
19
app/dist/scripts/app.js
vendored
|
@ -59,10 +59,23 @@ document.querySelectorAll("a[href^='#']").forEach(anchor => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Newsletter
|
// Newsletter
|
||||||
document.querySelector("[data-action='subscribe to newsletter']").onclick = () => {
|
document.getElementById("emailAddress").addEventListener("keyup", event => {
|
||||||
const email = document.getElementById("emailAddress").value;
|
const key = event.keyCode ? event.keyCode : event.which;
|
||||||
|
|
||||||
if (!validateEmail(email)) return;
|
if (key === 13)
|
||||||
|
document.querySelector("[data-action='subscribe to newsletter']").click();
|
||||||
|
});
|
||||||
|
|
||||||
|
document.querySelector("[data-action='subscribe to newsletter']").onclick = () => {
|
||||||
|
const email = document.getElementById("emailAddress").value.trim();
|
||||||
|
|
||||||
|
if (!validateEmail(email)) {
|
||||||
|
document.getElementById("emailMessage").classList.add("error");
|
||||||
|
document.getElementById("emailMessage").innerHTML = "Your email address is invalid";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById("emailMessage").classList.remove("error");
|
||||||
|
|
||||||
send(JSON.stringify({
|
send(JSON.stringify({
|
||||||
email: email,
|
email: email,
|
||||||
|
|
10
app/dist/scripts/sockets.js
vendored
10
app/dist/scripts/sockets.js
vendored
|
@ -50,8 +50,14 @@ function initializeWebSocketConnection() {
|
||||||
|
|
||||||
case data.message === "updated html":
|
case data.message === "updated html":
|
||||||
document.querySelector(data.selector).innerHTML = data.html;
|
document.querySelector(data.selector).innerHTML = data.html;
|
||||||
document.getElementById("emailAddress").value = "";
|
|
||||||
document.getElementById("emailMessage").innerHTML = "";
|
if (data.class)
|
||||||
|
document.querySelector(data.selector).classList.add(data.class);
|
||||||
|
|
||||||
|
if (data.selector !== "#emailMessage") {
|
||||||
|
document.getElementById("emailAddress").value = "";
|
||||||
|
document.getElementById("emailMessage").innerHTML = "";
|
||||||
|
}
|
||||||
|
|
||||||
if (data.example === 2) {
|
if (data.example === 2) {
|
||||||
detectLanguageAndUpdate(); // eslint-disable-line
|
detectLanguageAndUpdate(); // eslint-disable-line
|
||||||
|
|
|
@ -117,12 +117,21 @@
|
||||||
|
|
||||||
.newsletter-cta__message {
|
.newsletter-cta__message {
|
||||||
@include clearfix;
|
@include clearfix;
|
||||||
background-color: $teal;
|
|
||||||
color: $white;
|
color: $white;
|
||||||
font-size: 1rem;
|
cursor: default;
|
||||||
|
display: inline-block;
|
||||||
|
font-size: 0.8rem;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
||||||
&:not(:empty) {
|
&:not(:empty) {
|
||||||
padding: 1rem;
|
margin: 0.5rem auto 0; padding: 0.25rem 1rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:not(.error) {
|
||||||
|
background-color: $teal;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.error {
|
||||||
|
background-color: $red;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
106
app/sockets.js
106
app/sockets.js
|
@ -327,68 +327,70 @@ function newsletterSubscribe(data, socket) {
|
||||||
const email = data.email;
|
const email = data.email;
|
||||||
|
|
||||||
if (!validateEmail(email)) return socket.send(JSON.stringify({
|
if (!validateEmail(email)) return socket.send(JSON.stringify({
|
||||||
html: "Your email is invalid",
|
class: "error",
|
||||||
|
html: "Your email address is invalid",
|
||||||
message: "updated html",
|
message: "updated html",
|
||||||
selector: "#emailMessage"
|
selector: "#emailMessage"
|
||||||
}));
|
}));
|
||||||
|
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => request({
|
||||||
request({
|
method: "POST",
|
||||||
method: "POST",
|
url: `https://api.lbry.io/list/subscribe?email=${encodeURIComponent(email)}&tag=developer`
|
||||||
url: `https://api.lbry.io/list/subscribe?email=${email}&tag=developer`
|
}).then(body => {
|
||||||
}).then(body => {
|
if (!body || !JSON.parse(body)) {
|
||||||
if (!body || !JSON.parse(body)) {
|
logSlackError(
|
||||||
logSlackError(
|
"\n" +
|
||||||
"\n" +
|
"> *NEWSLETTER ERROR:* ```¯\\_(ツ)_/¯ This should be an unreachable error```" + "\n" +
|
||||||
"> *NEWSLETTER ERROR:* ```¯\\_(ツ)_/¯ This should be an unreachable error```" + "\n" +
|
`> _Cause: ${email} interacted with the form_\n`
|
||||||
`> _Cause: ${email} interacted with the form_\n`
|
);
|
||||||
);
|
|
||||||
|
|
||||||
return resolve(socket.send(JSON.stringify({
|
|
||||||
html: "Something is terribly wrong",
|
|
||||||
message: "updated html",
|
|
||||||
selector: "#emailMessage"
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
|
|
||||||
body = JSON.parse(body);
|
|
||||||
|
|
||||||
if (!body.success) {
|
|
||||||
logSlackError(
|
|
||||||
"\n" +
|
|
||||||
"> *NEWSLETTER ERROR:* ```" + JSON.parse(JSON.stringify(body.error)) + "```" + "\n" +
|
|
||||||
`> _Cause: ${email} interacted with the form_\n`
|
|
||||||
);
|
|
||||||
|
|
||||||
return reject(socket.send(JSON.stringify({
|
|
||||||
html: body.error,
|
|
||||||
message: "updated html",
|
|
||||||
selector: "#emailMessage"
|
|
||||||
})));
|
|
||||||
}
|
|
||||||
|
|
||||||
return resolve(socket.send(JSON.stringify({
|
return resolve(socket.send(JSON.stringify({
|
||||||
html: "Thank you! Please confirm subscription in your inbox.",
|
class: "error",
|
||||||
|
html: "Something is terribly wrong",
|
||||||
message: "updated html",
|
message: "updated html",
|
||||||
selector: "#emailMessage"
|
selector: "#emailMessage"
|
||||||
})));
|
})));
|
||||||
})
|
}
|
||||||
.catch(welp => {
|
|
||||||
if (welp.statusCode === 409) {
|
|
||||||
logSlackError(
|
|
||||||
"\n" +
|
|
||||||
"> *NEWSLETTER ERROR:* ```" + JSON.parse(JSON.stringify(welp.error)) + "```" + "\n" +
|
|
||||||
`> _Cause: ${email} interacted with the form_\n`
|
|
||||||
);
|
|
||||||
|
|
||||||
return resolve(socket.send(JSON.stringify({
|
body = JSON.parse(body);
|
||||||
html: "You have already subscribed!",
|
|
||||||
message: "updated html",
|
if (!body.success) {
|
||||||
selector: "#emailMessage"
|
logSlackError(
|
||||||
})));
|
"\n" +
|
||||||
}
|
"> *NEWSLETTER ERROR:* ```" + JSON.parse(JSON.stringify(body.error)) + "```" + "\n" +
|
||||||
});
|
`> _Cause: ${email} interacted with the form_\n`
|
||||||
});
|
);
|
||||||
|
|
||||||
|
return reject(socket.send(JSON.stringify({
|
||||||
|
class: "error",
|
||||||
|
html: body.error,
|
||||||
|
message: "updated html",
|
||||||
|
selector: "#emailMessage"
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolve(socket.send(JSON.stringify({
|
||||||
|
html: "Thank you! Please confirm subscription in your inbox.",
|
||||||
|
message: "updated html",
|
||||||
|
selector: "#emailMessage"
|
||||||
|
})));
|
||||||
|
})
|
||||||
|
.catch(welp => {
|
||||||
|
if (welp.statusCode === 409) {
|
||||||
|
logSlackError(
|
||||||
|
"\n" +
|
||||||
|
"> *NEWSLETTER ERROR:* ```" + JSON.parse(JSON.stringify(welp.error)) + "```" + "\n" +
|
||||||
|
`> _Cause: ${email} interacted with the form_\n`
|
||||||
|
);
|
||||||
|
|
||||||
|
return resolve(socket.send(JSON.stringify({
|
||||||
|
class: "error",
|
||||||
|
html: "You have already subscribed!",
|
||||||
|
message: "updated html",
|
||||||
|
selector: "#emailMessage"
|
||||||
|
})));
|
||||||
|
}
|
||||||
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateEmail(email) {
|
function validateEmail(email) {
|
||||||
|
|
Loading…
Reference in a new issue