diff options
author | ManeraKai <manerakai@protonmail.com> | 2022-04-13 21:35:09 +0300 |
---|---|---|
committer | ManeraKai <manerakai@protonmail.com> | 2022-04-13 21:35:09 +0300 |
commit | efc52079a11bad0bbcc7f3269b032f85127bc6ad (patch) | |
tree | 0a94743de5e77ba3e71646bebe746b49a7abd798 /src | |
parent | Merge branch 'master' of https://github.com/libredirect/libredirect (diff) | |
download | libredirect-efc52079a11bad0bbcc7f3269b032f85127bc6ad.zip |
Added custom instance to FacilMap #139
Diffstat (limited to 'src')
-rw-r--r-- | src/assets/javascripts/helpers/common.js | 3 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/imgur.js | 4 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/maps.js | 127 | ||||
-rw-r--r-- | src/assets/javascripts/helpers/reddit.js | 3 | ||||
-rw-r--r-- | src/pages/options/maps/maps.html | 30 | ||||
-rw-r--r-- | src/pages/options/maps/maps.js | 25 | ||||
-rw-r--r-- | src/pages/options/reddit/reddit.js | 1 | ||||
-rw-r--r-- | src/pages/options/twitter/twitter.js | 1 |
8 files changed, 140 insertions, 54 deletions
diff --git a/src/assets/javascripts/helpers/common.js b/src/assets/javascripts/helpers/common.js index 65810db4..6dd0e7fb 100644 --- a/src/assets/javascripts/helpers/common.js +++ b/src/assets/javascripts/helpers/common.js @@ -47,6 +47,7 @@ async function updateInstances() { instagramHelper.setRedirects(instances.bibliogram); redditHelper.setTedditRedirects(instances.teddit); + redditHelper.setLibredditRedirects(instances.libreddit); translateHelper.setSimplyTranslateRedirects(instances.simplyTranslate); translateHelper.setLingvaRedirects(instances.lingva) @@ -128,7 +129,7 @@ function processDefaultCustomInstances( for (let element of nameCheckListElement.getElementsByTagName('input')) { if (element.className != 'toogle-all') - nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => { + nameProtocolElement.getElementsByClassName(element.className)[0].addEventListener("change", event => { if (event.target.checked) nameDefaultRedirects.push(element.className) else { diff --git a/src/assets/javascripts/helpers/imgur.js b/src/assets/javascripts/helpers/imgur.js index 3884d5dc..20d7c5b3 100644 --- a/src/assets/javascripts/helpers/imgur.js +++ b/src/assets/javascripts/helpers/imgur.js @@ -116,9 +116,9 @@ function isImgur(url, initiator) { if (url.pathname == "/") return false; if ( initiator && - ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.includes(initiator.host)) + ([...redirects.rimgo.normal, ...rimgoNormalCustomRedirects].includes(initiator.origin) || targets.test(initiator.host)) ) return false; - return targets.some(rx => rx.test(url.href)); + return targets.test(url.href); } function redirect(url, type) { diff --git a/src/assets/javascripts/helpers/maps.js b/src/assets/javascripts/helpers/maps.js index f0a58f2c..525fb145 100644 --- a/src/assets/javascripts/helpers/maps.js +++ b/src/assets/javascripts/helpers/maps.js @@ -4,6 +4,7 @@ window.browser = window.browser || window.chrome; import commonHelper from './common.js' const targets = /^https?:\/{2}(((www|maps)\.)?(google\.).*(\/maps)|maps\.(google\.).*)/; + let redirects = { 'osm': { "normal": [ @@ -16,49 +17,7 @@ let redirects = { ] } }; -const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; -const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; -const placeRegex = /\/place\/(.*)\//; -const travelModes = { - driving: "fossgis_osrm_car", - walking: "fossgis_osrm_foot", - bicycling: "fossgis_osrm_bike", - transit: "fossgis_osrm_car", // not implemented on OSM, default to car. -}; -const travelModesFacil = { - driving: "car", - walking: "pedestrian", - bicycling: "bicycle", - transit: "car", // not implemented on Facil, default to car. -}; -const osmLayers = { - none: "S", - transit: "T", - traffic: "S", // not implemented on OSM, default to standard. - bicycling: "C", -}; - -function addressToLatLng(address, callback) { - const xmlhttp = new XMLHttpRequest(); - xmlhttp.onreadystatechange = () => { - if (xmlhttp.readyState === XMLHttpRequest.DONE) { - if (xmlhttp.status === 200) { - const json = JSON.parse(xmlhttp.responseText)[0]; - if (json) callback( - `${json.lat},${json.lon}`, - `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, - ); - } else - console.info("Error: Status is " + xmlhttp.status); - } - }; - xmlhttp.open( - "GET", - `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, - false - ); - xmlhttp.send(); -} +const getRedirects = () => redirects; let disable; const getDisable = () => disable; @@ -76,7 +35,67 @@ function setFrontend(val) { console.log("mapsFrontend: ", frontend) }; +let facilNormalRedirectsChecks; +const getFacilNormalRedirectsChecks = () => facilNormalRedirectsChecks; +function setFacilNormalRedirectsChecks(val) { + facilNormalRedirectsChecks = val; + browser.storage.local.set({ facilNormalRedirectsChecks }) + console.log("facilNormalRedirectsChecks: ", val) +} + +let facilNormalCustomRedirects = []; +const getFacilNormalCustomRedirects = () => facilNormalCustomRedirects; +function setFacilNormalCustomRedirects(val) { + facilNormalCustomRedirects = val; + browser.storage.local.set({ facilNormalCustomRedirects }) + console.log("facilNormalCustomRedirects: ", val) +} + + function redirect(url, initiator) { + const mapCentreRegex = /@(-?\d[0-9.]*),(-?\d[0-9.]*),(\d{1,2})[.z]/; + const dataLatLngRegex = /!3d(-?[0-9]{1,}.[0-9]{1,})!4d(-?[0-9]{1,}.[0-9]{1,})/; + const placeRegex = /\/place\/(.*)\//; + const travelModes = { + driving: "fossgis_osrm_car", + walking: "fossgis_osrm_foot", + bicycling: "fossgis_osrm_bike", + transit: "fossgis_osrm_car", // not implemented on OSM, default to car. + }; + const travelModesFacil = { + driving: "car", + walking: "pedestrian", + bicycling: "bicycle", + transit: "car", // not implemented on Facil, default to car. + }; + const osmLayers = { + none: "S", + transit: "T", + traffic: "S", // not implemented on OSM, default to standard. + bicycling: "C", + }; + + function addressToLatLng(address, callback) { + const xmlhttp = new XMLHttpRequest(); + xmlhttp.onreadystatechange = () => { + if (xmlhttp.readyState === XMLHttpRequest.DONE) { + if (xmlhttp.status === 200) { + const json = JSON.parse(xmlhttp.responseText)[0]; + if (json) callback( + `${json.lat},${json.lon}`, + `${json.boundingbox[2]},${json.boundingbox[1]},${json.boundingbox[3]},${json.boundingbox[0]}`, + ); + } else + console.info("Error: Status is " + xmlhttp.status); + } + }; + xmlhttp.open( + "GET", + `https://nominatim.openstreetmap.org/search/${address}?format=json&limit=1`, + false + ); + xmlhttp.send(); + } if (disable) return; if (initiator && initiator.host === "earth.google.com") return; @@ -84,7 +103,7 @@ function redirect(url, initiator) { let randomInstance; if (frontend == 'osm') randomInstance = commonHelper.getRandomInstance(redirects.osm.normal); - if (frontend == 'facil') randomInstance = commonHelper.getRandomInstance(redirects.facil.normal); + if (frontend == 'facil') randomInstance = commonHelper.getRandomInstance([...facilNormalRedirectsChecks, ...facilNormalCustomRedirects]); let mapCentre = "#"; let prefs = {}; @@ -200,11 +219,18 @@ async function init() { browser.storage.local.get( [ "disableMaps", - "mapsFrontend" + "mapsFrontend", + + "facilNormalRedirectsChecks", + "facilNormalCustomRedirects", ], r => { - disable = r.disableMaps ?? false - frontend = r.mapsFrontend ?? 'osm' + disable = r.disableMaps ?? false; + frontend = r.mapsFrontend ?? 'osm'; + + facilNormalRedirectsChecks = r.facilNormalRedirectsChecks ?? [...redirects.facil.normal]; + facilNormalCustomRedirects = r.facilNormalCustomRedirects ?? []; + resolve(); } ); @@ -218,6 +244,13 @@ export default { getFrontend, setFrontend, + getRedirects, + + getFacilNormalRedirectsChecks, + setFacilNormalRedirectsChecks, + getFacilNormalCustomRedirects, + setFacilNormalCustomRedirects, + redirect, init, }; diff --git a/src/assets/javascripts/helpers/reddit.js b/src/assets/javascripts/helpers/reddit.js index 73f10c42..77a77d43 100644 --- a/src/assets/javascripts/helpers/reddit.js +++ b/src/assets/javascripts/helpers/reddit.js @@ -417,7 +417,7 @@ function switchInstance(url) { } async function init() { - return new Promise((resolve) => { + return new Promise(resolve => { fetch('/instances/data.json').then(response => response.text()).then(data => { let dataJson = JSON.parse(data); browser.storage.local.get( @@ -453,6 +453,7 @@ async function init() { alwaysUsePreferred = r.alwaysUsePreferred ?? false; redirects.teddit = dataJson.teddit; + redirects.libreddit = dataJson.libreddit; if (r.redditRedirects) redirects = r.redditRedirects; if (r.redditRedirects) redirects = r.redditRedirects; diff --git a/src/pages/options/maps/maps.html b/src/pages/options/maps/maps.html index 849c5c1c..08a0315b 100644 --- a/src/pages/options/maps/maps.html +++ b/src/pages/options/maps/maps.html @@ -144,10 +144,38 @@ </select> </div> + <div id="facil"> + <div class="normal"> + <div class="some-block option-block"> + <h4 data-localise="__MSG_defaultInstances__">Default Instances</h4> + </div> + <div class="checklist checklist"></div> + <hr> + <div class="some-block option-block"> + <h4 data-localise="__MSG_customInstances__">Custom Instances</h4> + </div> + <form class="custom-instance-form"> + <div class="some-block option-block"> + <input class="custom-instance" placeholder="https://facilMap.com" type="url" /> + <button type="submit" class="add add-instance"> + <svg xmlns="http://www.w3.org/2000/svg" height="20px" viewBox="0 0 24 24" width="20px" + fill="currentColor"> + <path d="M0 0h24v24H0V0z" fill="none" /> + <path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z" /> + </svg> + </button> + </div> + </form> + <div class="checklist custom-checklist"></div> + + </div> + </div> + </div> + </section> <script type="module" src="../init.js"></script> <script type="module" src="./maps.js"></script> <script type="module" src="../../../assets/javascripts/localise.js"></script> </body> -</html> +</html> \ No newline at end of file diff --git a/src/pages/options/maps/maps.js b/src/pages/options/maps/maps.js index 400d5345..88a99ab6 100644 --- a/src/pages/options/maps/maps.js +++ b/src/pages/options/maps/maps.js @@ -1,4 +1,5 @@ import mapsHelper from "../../../assets/javascripts/helpers/maps.js"; +import commonHelper from "../../../assets/javascripts/helpers/common.js"; let disableMapsElement = document.getElementById("disable-osm"); disableMapsElement.addEventListener("change", @@ -10,11 +11,35 @@ mapsFrontendElement.addEventListener("change", event => { let frontend = event.target.options[mapsFrontendElement.selectedIndex].value; mapsHelper.setFrontend(frontend); + changeFrontendsSettings(frontend); } ); +let facilDivElement = document.getElementById("facil") +function changeFrontendsSettings(frontend) { + if (frontend == 'facil') { + facilDivElement.style.display = 'block'; + } + else if (frontend == 'osm') { + facilDivElement.style.display = 'none'; + } +} + mapsHelper.init().then(() => { + console.log(mapsHelper.getFacilNormalRedirectsChecks()) disableMapsElement.checked = !mapsHelper.getDisable(); let frontend = mapsHelper.getFrontend(); mapsFrontendElement.value = frontend; + changeFrontendsSettings(frontend); + + commonHelper.processDefaultCustomInstances( + 'facil', + 'normal', + mapsHelper, + document, + mapsHelper.getFacilNormalRedirectsChecks, + mapsHelper.setFacilNormalRedirectsChecks, + mapsHelper.getFacilNormalCustomRedirects, + mapsHelper.setFacilNormalCustomRedirects + ) }) \ No newline at end of file diff --git a/src/pages/options/reddit/reddit.js b/src/pages/options/reddit/reddit.js index fea1c08b..1c577a94 100644 --- a/src/pages/options/reddit/reddit.js +++ b/src/pages/options/reddit/reddit.js @@ -81,7 +81,6 @@ redditHelper.init().then(() => { protocolElement.value = protocol; changeProtocolSettings(protocol); - commonHelper.processDefaultCustomInstances( 'libreddit', 'normal', diff --git a/src/pages/options/twitter/twitter.js b/src/pages/options/twitter/twitter.js index 5e7e9a05..b86fc197 100644 --- a/src/pages/options/twitter/twitter.js +++ b/src/pages/options/twitter/twitter.js @@ -78,7 +78,6 @@ function init() { let protocol = twitterHelper.getProtocol(); protocolElement.value = protocol; changeProtocolSettings(protocol); - console.log('init'); theme.value = twitterHelper.getTheme(); infiniteScroll.checked = twitterHelper.getInfiniteScroll(); stickyProfile.checked = twitterHelper.getStickyProfile(); |