diff options
author | Allan Wang <me@allanwang.ca> | 2019-03-04 16:08:55 -0500 |
---|---|---|
committer | Allan Wang <me@allanwang.ca> | 2019-03-04 16:08:55 -0500 |
commit | f77c652e612241e046d16690ca239cce44a00b07 (patch) | |
tree | 396621890c2929058eb01b73e66a621643f2630b /app/src/web | |
parent | dc4910e1e9b26eb71bb7a663cb2994b277be40ac (diff) | |
download | frost-f77c652e612241e046d16690ca239cce44a00b07.tar.gz frost-f77c652e612241e046d16690ca239cce44a00b07.tar.bz2 frost-f77c652e612241e046d16690ca239cce44a00b07.zip |
Improve context click logic
Diffstat (limited to 'app/src/web')
-rw-r--r-- | app/src/web/assets/js/context_a.js | 20 | ||||
-rw-r--r-- | app/src/web/assets/js/context_a.ts | 23 |
2 files changed, 29 insertions, 14 deletions
diff --git a/app/src/web/assets/js/context_a.js b/app/src/web/assets/js/context_a.js index 410553bd..61192b28 100644 --- a/app/src/web/assets/js/context_a.js +++ b/app/src/web/assets/js/context_a.js @@ -28,12 +28,22 @@ Frost.contextMenu(url, text); return true; }; + var _getImageStyleUrl = function (el) { + var img = el.querySelector("[style*=\"background-image: url(\"]"); + if (!img) { + return null; + } + return window.getComputedStyle(img, null).backgroundImage.trim().slice(4, -1); + }; var _frostImage = function (e, target) { var element = target; for (var i = 0; i < 2; i++) { if (element.tagName !== 'A') { element = element.parentElement; } + else { + break; + } } if (element.tagName !== 'A') { return false; @@ -43,12 +53,8 @@ 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); + var imageUrl = _getImageStyleUrl(element) || _getImageStyleUrl(element.parentElement); + if (imageUrl) { console.log("Context image: " + imageUrl); Frost.loadImage(imageUrl, text); return true; @@ -64,7 +70,7 @@ Frost.contextMenu(url, text); return true; }; - var handlers = [_frostCopyComment, _frostCopyPost, _frostImage]; + var handlers = [_frostImage, _frostCopyComment, _frostCopyPost]; var _frostAContext = function (e) { Frost.longClick(true); longClick = true; diff --git a/app/src/web/assets/js/context_a.ts b/app/src/web/assets/js/context_a.ts index 4751bbdc..5eec7611 100644 --- a/app/src/web/assets/js/context_a.ts +++ b/app/src/web/assets/js/context_a.ts @@ -43,12 +43,25 @@ return true; }; + const _getImageStyleUrl = (el: Element): string | null => { + const img = el.querySelector("[style*=\"background-image: url(\"]"); + if (!img) { + return null + } + return (<String>window.getComputedStyle(img, null).backgroundImage).trim().slice(4, -1); + }; + + /** + * Opens image activity for posts with just one image + */ const _frostImage: EventHandler = (e, target) => { let element: Element = target; // Notifications are two layers under for (let i = 0; i < 2; i++) { if (element.tagName !== 'A') { element = <Element>element.parentElement; + } else { + break } } if (element.tagName !== 'A') { @@ -60,12 +73,8 @@ } const text = (<HTMLElement>element.parentElement).innerText; // Check if image item exists, first in children and then in parent - let image = element.querySelector("[style*=\"background-image: url(\"]"); - if (!image) { - image = (<Element>element.parentElement).querySelector("[style*=\"background-image: url(\"]") - } - if (image) { - const imageUrl = (<String>window.getComputedStyle(image, null).backgroundImage).trim().slice(4, -1); + const imageUrl = _getImageStyleUrl(element) || _getImageStyleUrl(<Element>element.parentElement); + if (imageUrl) { console.log(`Context image: ${imageUrl}`); Frost.loadImage(imageUrl, text); return true; @@ -83,7 +92,7 @@ return true; }; - const handlers = [_frostCopyComment, _frostCopyPost, _frostImage]; + const handlers = [_frostImage, _frostCopyComment, _frostCopyPost]; const _frostAContext = (e: Event) => { Frost.longClick(true); |