diff options
Diffstat (limited to 'static/fluoride.js')
-rw-r--r-- | static/fluoride.js | 76 |
1 files changed, 46 insertions, 30 deletions
diff --git a/static/fluoride.js b/static/fluoride.js index e6a63ef..755c6e7 100644 --- a/static/fluoride.js +++ b/static/fluoride.js @@ -47,13 +47,15 @@ function updateActionForm(id, f, action) { f.dataset.action = action; } -function handleLikeForm(id, f) { +function handleLikeForm(f) { + var id = f.dataset.id; f.onsubmit = function(event) { event.preventDefault(); var action = f.dataset.action; var forms = document. - querySelectorAll(".status-"+id+" .status-like"); + querySelectorAll(".status-action-container-"+id+" .status-like"); + for (var i = 0; i < forms.length; i++) { updateActionForm(id, forms[i], reverseActions[action]); } @@ -70,12 +72,14 @@ function handleLikeForm(id, f) { if (count === 0) count = ""; var counts = document. - querySelectorAll(".status-"+id+" .status-like-count"); + querySelectorAll(".status-action-container-"+id+" .status-like-count"); for (var i = 0; i < counts.length; i++) { if (count > 0) { counts[i].innerHTML = "(" + count + ")"; + counts[i].classList.remove("hidden"); } else { counts[i].innerHTML = ""; + counts[i].classList.add("hidden"); } } }, function(err) { @@ -86,13 +90,14 @@ function handleLikeForm(id, f) { } } -function handleRetweetForm(id, f) { +function handleRetweetForm(f) { + var id = f.dataset.id; f.onsubmit = function(event) { event.preventDefault(); var action = f.dataset.action; var forms = document. - querySelectorAll(".status-"+id+" .status-retweet"); + querySelectorAll(".status-action-container-"+id+" .status-retweet"); for (var i = 0; i < forms.length; i++) { updateActionForm(id, forms[i], reverseActions[action]); } @@ -109,12 +114,14 @@ function handleRetweetForm(id, f) { if (count === 0) count = ""; var counts = document. - querySelectorAll(".status-"+id+" .status-retweet-count"); + querySelectorAll(".status-action-container-"+id+" .status-retweet-count"); for (var i = 0; i < counts.length; i++) { if (count > 0) { counts[i].innerHTML = "(" + count + ")"; + counts[i].classList.remove("hidden"); } else { counts[i].innerHTML = ""; + counts[i].classList.add("hidden"); } } }, function(err) { @@ -151,8 +158,7 @@ function handleReplyToLink(a) { var ract = event.target.getBoundingClientRect(); copy.style["max-width"] = (window.innerWidth - ract.left - 32) + "px"; if (ract.top > window.innerHeight / 2) { - copy.style.bottom = (window.innerHeight - - window.scrollY - ract.top) + "px"; + copy.style.bottom = ract.height + 'px'; } event.target.parentElement.appendChild(copy); } @@ -208,6 +214,8 @@ function handleStatusLink(a) { } function setPos(el, cx, cy, mw, mh) { + if (!el) + return; var h = el.clientHeight; var w = el.clientWidth; var left, top; @@ -285,48 +293,56 @@ function onPaste(e) { fp.files = dt.files; } +function onKeydown(e) { + if (e.key == 'Enter' && e.ctrlKey) { + document.querySelector(".post-form").submit(); + } +} + document.addEventListener("DOMContentLoaded", function() { checkCSRFToken(); checkAntiDopamineMode(); - var statuses = document.querySelectorAll(".status-container"); - for (var i = 0; i < statuses.length; i++) { - var s = statuses[i]; - var id = s.dataset.id; - - var likeForm = s.querySelector(".status-like"); - handleLikeForm(id, likeForm); + var likeForms = document.querySelectorAll(".status-like"); + for (var j = 0; j < likeForms.length; j++) { + handleLikeForm(likeForms[j]); + } - var retweetForm = s.querySelector(".status-retweet"); - handleRetweetForm(id, retweetForm); + var retweetForms = document.querySelectorAll(".status-retweet"); + for (var j = 0; j < retweetForms.length; j++) { + handleRetweetForm(retweetForms[j]); + } - var replyToLink = s.querySelector(".status-reply-to-link"); - handleReplyToLink(replyToLink); + var replyToLinks = document.querySelectorAll(".status-reply-to-link"); + for (var j = 0; j < replyToLinks.length; j++) { + handleReplyToLink(replyToLinks[j]); + } - var replyLinks = s.querySelectorAll(".status-reply-link"); - for (var j = 0; j < replyLinks.length; j++) { - handleReplyLink(replyLinks[j]); - } + var replyLinks = document.querySelectorAll(".status-reply-link"); + for (var j = 0; j < replyLinks.length; j++) { + handleReplyLink(replyLinks[j]); + } - var links = s.querySelectorAll(".status-content a"); - for (var j = 0; j < links.length; j++) { - handleStatusLink(links[j]); - } + var links = document.querySelectorAll(".status-content a"); + for (var j = 0; j < links.length; j++) { + handleStatusLink(links[j]); } - var links = document.querySelectorAll(".user-profile-decription a, .user-fields a"); + var links = document.querySelectorAll(".user-profile-description a, .user-fields a"); for (var j = 0; j < links.length; j++) { links[j].target = "_blank"; } - var links = document.querySelectorAll(".status-media-container .img-link"); + var links = document.querySelectorAll(".status-media-container .img-link, .user-profile-img-container .img-link"); for (var j = 0; j < links.length; j++) { handleImgPreview(links[j]); } var pf = document.querySelector(".post-form") - if (pf) + if (pf) { pf.addEventListener("paste", onPaste); + pf.addEventListener("keydown", onKeydown); + } }); // @license-end |