aboutsummaryrefslogtreecommitdiff
path: root/static/fluoride.js
diff options
context:
space:
mode:
Diffstat (limited to 'static/fluoride.js')
-rw-r--r--static/fluoride.js76
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