aboutsummaryrefslogtreecommitdiff
path: root/app/src/web/assets/js/context_a.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/web/assets/js/context_a.js')
-rw-r--r--app/src/web/assets/js/context_a.js100
1 files changed, 57 insertions, 43 deletions
diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js
index 7e636cea..0573a17a 100644
--- a/app/src/web/assets/js/context_a.js
+++ b/app/src/web/assets/js/context_a.js
@@ -1,61 +1,75 @@
"use strict";
-/**
- * Context menu for links
- * Largely mimics click_a.js
- */
(function () {
var longClick = false;
+ var _frostCopyPost = function (e, target) {
+ if (target.tagName != 'A') {
+ return false;
+ }
+ var parent1 = target.parentElement;
+ if (!parent1 || parent1.tagName != 'DIV') {
+ return false;
+ }
+ var parent2 = parent1.parentElement;
+ if (!parent2 || !parent2.classList.contains('story_body_container')) {
+ return false;
+ }
+ var url = target.getAttribute('href');
+ var text = parent1.innerText;
+ Frost.contextMenu(url, text);
+ return true;
+ };
+ var _frostImage = function (e, target) {
+ var element = target;
+ for (var i = 0; i < 2; i++) {
+ if (element.tagName != 'A') {
+ element = element.parentElement;
+ }
+ }
+ if (element.tagName != 'A') {
+ return false;
+ }
+ var url = element.getAttribute('href');
+ if (!url || url == '#') {
+ return false;
+ }
+ var text = element.parentElement.innerText;
+ var image = element.querySelector("[style*=\"background-image: url(\"]");
+ if (!image) {
+ image = element.parentElement.querySelector("[style*=\"background-image: url(\"]");
+ }
+ if (image) {
+ var imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1);
+ console.log("Context image: " + imageUrl);
+ Frost.loadImage(imageUrl, text);
+ return true;
+ }
+ var img = element.querySelector("img[src*=scontent]");
+ if (img instanceof HTMLMediaElement) {
+ var imgUrl = img.src;
+ console.log("Context img: " + imgUrl);
+ Frost.loadImage(imgUrl, text);
+ return true;
+ }
+ console.log("Context content " + url + " " + text);
+ Frost.contextMenu(url, text);
+ return true;
+ };
+ var handlers = [_frostCopyPost, _frostImage];
var _frostAContext = function (e) {
Frost.longClick(true);
longClick = true;
- /*
- * Commonality; check for valid target
- */
var target = e.target || e.currentTarget || e.srcElement;
if (!(target instanceof Element)) {
console.log("No element found");
return;
}
- var element = target;
- // Notifications are two layers under
- for (var i = 0; i < 2; i++) {
- if (element.tagName != 'A') {
- element = element.parentElement;
- }
- }
- if (element.tagName == 'A') {
- var url = element.getAttribute('href');
- if (!url || url == '#') {
- return;
- }
- var text = element.parentElement.innerText;
- // Check if image item exists, first in children and then in parent
- var image = element.querySelector("[style*=\"background-image: url(\"]");
- if (!image) {
- image = element.parentElement.querySelector("[style*=\"background-image: url(\"]");
- }
- if (image) {
- var imageUrl = window.getComputedStyle(image, null).backgroundImage.trim().slice(4, -1);
- console.log("Context image: " + imageUrl);
- Frost.loadImage(imageUrl, text);
- e.stopPropagation();
- e.preventDefault();
- return;
- }
- // Check if true img exists
- var img = element.querySelector("img[src*=scontent]");
- if (img instanceof HTMLMediaElement) {
- var imgUrl = img.src;
- console.log("Context img: " + imgUrl);
- Frost.loadImage(imgUrl, text);
+ for (var _i = 0, handlers_1 = handlers; _i < handlers_1.length; _i++) {
+ var h = handlers_1[_i];
+ if (h(e, target)) {
e.stopPropagation();
e.preventDefault();
return;
}
- console.log("Context content " + url + " " + text);
- Frost.contextMenu(url, text);
- e.stopPropagation();
- e.preventDefault();
}
};
document.addEventListener('contextmenu', _frostAContext, true);