aboutsummaryrefslogtreecommitdiff
path: root/app/src/main/assets/js/context_a.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/assets/js/context_a.coffee')
-rw-r--r--app/src/main/assets/js/context_a.coffee59
1 files changed, 59 insertions, 0 deletions
diff --git a/app/src/main/assets/js/context_a.coffee b/app/src/main/assets/js/context_a.coffee
new file mode 100644
index 00000000..0dca1b7f
--- /dev/null
+++ b/app/src/main/assets/js/context_a.coffee
@@ -0,0 +1,59 @@
+# context menu for links
+# largely mimics click_a.js
+# we will also bind a listener here to notify the activity not to deal with viewpager scrolls
+longClick = false
+
+_frostAContext = (e) ->
+ Frost?.longClick true
+ longClick = true
+
+ ###
+ # Commonality; check for valid target
+ ###
+
+ element = e.target or e.currentTarget or e.srcElement
+ if !element
+ return
+ if element.tagName != "A"
+ element = element.parentNode
+ #Notifications is two layers under
+ if element.tagName != "A"
+ element = element.parentNode
+ if element.tagName == "A" and element.getAttribute("href") != "#"
+ url = element.getAttribute("href")
+ if !url
+ return
+ text = element.parentNode.innerText
+ # check if image item exists, first in children and then in parent
+ image = element.querySelector("[style*=\"background-image: url(\"]")
+ if !image
+ image = element.parentNode.querySelector("[style*=\"background-image: url(\"]")
+ if image
+ 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
+ img = element.querySelector("img[src*=scontent]")
+ if img
+ imgUrl = img.src
+ console.log "Context img #{imgUrl}"
+ Frost?.loadImage imgUrl, text
+ e.stopPropagation()
+ e.preventDefault()
+ return
+ console.log "Context Content #{url} #{text}"
+ Frost?.contextMenu url, text
+ e.stopPropagation()
+ e.preventDefault()
+ return
+
+document.addEventListener "contextmenu", _frostAContext, true
+document.addEventListener "touchend", ((e) ->
+ if longClick
+ Frost?.longClick false
+ longClick = false
+ return
+), true