diff options
author | Allan Wang <me@allanwang.ca> | 2019-04-26 23:48:19 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-26 23:48:19 -0700 |
commit | 5139111a7f1f4b18e993b23d2a0b7bb5a260e905 (patch) | |
tree | b1007ac60f7f188b24999f756271430e341b7f37 /app/src/web/ts/click_a.ts | |
parent | 4e1a32bf33f7ee8cf9a125440ed11db61f884a88 (diff) | |
download | frost-5139111a7f1f4b18e993b23d2a0b7bb5a260e905.tar.gz frost-5139111a7f1f4b18e993b23d2a0b7bb5a260e905.tar.bz2 frost-5139111a7f1f4b18e993b23d2a0b7bb5a260e905.zip |
Docker (#1411)
* Add initial docker test
* Depend on java only
* Remove android part
* Move build stuff to docker
* Use shorter docker file
* Quiet docker build
* Move quiet flag forward
* Export android home
* Echo versions
* Try generic lang
* Copy project
* Group sdk manager runs
* Reorder sdkmanager
* Gitignore generated files
* Copy apk output out of docker
* Fail if no apks found
* Install packages
* Add caching
* Name container
* Update caching
* Add package lock file
* Update folder path
* Switch home dir
* Copy folder contents
* Disable caching
* Add back gradle caching
* Remove original files from asset folder
* Try generic docker
* Delete extra loader
* Try java
* Try android
* Use java
* Restrict caching
Diffstat (limited to 'app/src/web/ts/click_a.ts')
-rw-r--r-- | app/src/web/ts/click_a.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/app/src/web/ts/click_a.ts b/app/src/web/ts/click_a.ts new file mode 100644 index 00000000..5023610e --- /dev/null +++ b/app/src/web/ts/click_a.ts @@ -0,0 +1,57 @@ +(function () { + let prevented = false; + + const _frostAClick = (e: Event) => { + // check for valid target + const target = e.target || e.currentTarget || e.srcElement; + if (!(target instanceof Element)) { + console.log("No element found"); + return + } + let element: Element = target; + // Notifications are two layers under + for (let i = 0; i < 2; i++) { + if (element.tagName !== 'A') { + element = <Element>element.parentElement; + } + } + if (element.tagName === 'A') { + if (!prevented) { + const url = element.getAttribute('href'); + if (!url || url === '#') { + return + } + console.log(`Click intercept ${url}`); + // If Frost is injected, check if loading the url through an overlay works + if (Frost.loadUrl(url)) { + e.stopPropagation(); + e.preventDefault(); + } + } else { + console.log("Click intercept prevented") + } + } + }; + + /* + * On top of the click event, we must stop it for long presses + * Since that will conflict with the context menu + * Note that we only override it on conditions where the context menu + * Will occur + */ + const _frostPreventClick = () => { + console.log("Click _frostPrevented"); + prevented = true; + }; + + document.addEventListener('click', _frostAClick, true); + let clickTimeout: number | undefined = undefined; + document.addEventListener('touchstart', () => { + clickTimeout = setTimeout(_frostPreventClick, 400); + }, true); + document.addEventListener('touchend', () => { + prevented = false; + clearTimeout(clickTimeout) + }, true); +}).call(undefined); + |