aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--juick-server/src/main/assets/scripts.js44
1 files changed, 31 insertions, 13 deletions
diff --git a/juick-server/src/main/assets/scripts.js b/juick-server/src/main/assets/scripts.js
index af099674..8060bd71 100644
--- a/juick-server/src/main/assets/scripts.js
+++ b/juick-server/src/main/assets/scripts.js
@@ -175,7 +175,11 @@ function initWS() {
}
}
};
- setInterval(wsSendKeepAlive, 90000);
+ var keepAlive = setInterval(wsSendKeepAlive, 90000);
+ window.addEventListener('beforeunload', () => {
+ clearInterval(keepAlive);
+ ws.close();
+ })
}
function wsSendKeepAlive() {
@@ -277,7 +281,7 @@ function postformListener(formEl, ev) {
if (ev.ctrlKey && (ev.keyCode == 10 || ev.keyCode == 13)) {
let form = formEl.closest('form');
if (!form.onsubmit || form.onsubmit()) {
- form.dispatchEvent(new Event('submit'));
+ form.querySelector('input[type="submit"]').click();
}
}
}
@@ -300,12 +304,19 @@ function newMessage(evt) {
}
}
+function handleErrors(response) {
+ if (!response.ok) {
+ throw Error(response.statusText);
+ }
+ return response;
+}
+
function showCommentForm(mid, rid) {
let reply = document.getElementById(rid);
let formTarget = reply.querySelector('div.msg-cont .msg-comment-target');
if (formTarget) {
let formHtml = `
- <form action="/comment" method="POST" enctype="multipart/form-data">
+ <form>
<input type="hidden" name="mid" value="${mid}">
<input type="hidden" name="rid" value="${rid}">
<div class="msg-comment">
@@ -342,13 +353,13 @@ function showCommentForm(mid, rid) {
return false;
}
submitButton.disabled = true;
- e.preventDefault();
let formData = new FormData(form);
fetch('/api/comment' + '?hash=' + document.getElementById('body').getAttribute('data-hash'), {
method: 'POST',
body: formData,
credentials: 'omit'
- }).then(response => {
+ }).then(handleErrors)
+ .then(response => {
if (response.ok) {
response.json().then(result => {
if (result.newMessage) {
@@ -362,6 +373,7 @@ function showCommentForm(mid, rid) {
}).catch(error => {
alert(error.message);
});
+ e.preventDefault();
});
}
reply.querySelector('.msg-comment textarea').focus();
@@ -505,7 +517,8 @@ function openSocialWindow(a) {
function checkUsername() {
var uname = document.querySelector('#username').textContent,
style = document.querySelector('#username').style;
- fetch('//api.juick.com/users?uname=' + uname)
+ fetch('/api/users?uname=' + uname)
+ .then(handleErrors)
.then(function () {
style.background = '#FFCCCC';
})
@@ -547,9 +560,9 @@ function likeMessage(e, mid) {
fetch('/api/like?mid=' + mid
+ '&hash=' + document.getElementById('body').getAttribute('data-hash'), {
method: 'POST',
- mode: 'cors',
credentials: 'omit'
})
+ .then(handleErrors)
.then(function (response) {
if (response.ok) {
e.closest('article').appendChild(resultMessage('OK!'));
@@ -566,9 +579,9 @@ function subscribeMessage(e, mid) {
fetch('/api/subscribe?mid=' + mid
+ '&hash=' + document.getElementById('body').getAttribute('data-hash'), {
method: 'POST',
- mode: 'cors',
credentials: 'omit'
})
+ .then(handleErrors)
.then(function (response) {
if (response.ok) {
window.location.reload(true);
@@ -590,6 +603,7 @@ function setPopular(e, mid, popular) {
+ '&hash=' + document.getElementById('body').getAttribute('data-hash'), {
credentials: 'same-origin'
})
+ .then(handleErrors)
.then(function () {
e.closest('article').append(resultMessage('OK!'));
});
@@ -601,6 +615,7 @@ function setPrivacy(e, mid) {
+ '&hash=' + document.getElementById('body').getAttribute('data-hash'), {
credentials: 'same-origin'
})
+ .then(handleErrors)
.then(function () {
e.closest('article').append(resultMessage('OK!'));
});
@@ -609,8 +624,9 @@ function setPrivacy(e, mid) {
function getTags() {
fetch('/api/tags?hash=' + document.getElementById('body').getAttribute('data-hash'), {
- credentials: 'same-origin'
+ credentials: 'omit'
})
+ .then(handleErrors)
.then(response => {
return response.json();
})
@@ -698,13 +714,13 @@ ready(function () {
});
});
postmsg.addEventListener('submit', e => {
- e.preventDefault();
let formData = new FormData(postmsg);
fetch('/api/post' + '?hash=' + document.getElementById('body').getAttribute('data-hash'), {
method: 'POST',
body: formData,
credentials: 'omit'
- }).then(response => {
+ }).then(handleErrors)
+ .then(response => {
if (response.ok) {
response.json().then(result => {
if (result.newMessage) {
@@ -719,17 +735,18 @@ ready(function () {
}).catch(error => {
alert(error.message);
});
+ e.preventDefault();
});
}
document.querySelectorAll('.pmmsg').forEach(pmmsg => {
pmmsg.addEventListener('submit', e => {
- e.preventDefault();
let formData = new FormData(pmmsg);
fetch('/api/pm' + '?hash=' + document.getElementById('body').getAttribute('data-hash'), {
method: 'POST',
body: formData,
credentials: 'omit'
- }).then(response => {
+ }).then(handleErrors)
+ .then(response => {
if (response.ok) {
response.json().then(result => {
if (result.to) {
@@ -744,6 +761,7 @@ ready(function () {
}).catch(error => {
alert(error.message);
});
+ e.preventDefault();
});
});