about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2022-04-13 21:35:09 +0300
committerManeraKai <manerakai@protonmail.com>2022-04-13 21:35:09 +0300
commitefc52079a11bad0bbcc7f3269b032f85127bc6ad (patch)
tree0a94743de5e77ba3e71646bebe746b49a7abd798 /src
parentMerge branch 'master' of https://github.com/libredirect/libredirect (diff)
downloadlibredirect-efc52079a11bad0bbcc7f3269b032f85127bc6ad.zip
Added custom instance to FacilMap #139
Diffstat (limited to 'src')
-rw-r--r--src/assets/javascripts/helpers/common.js3
-rw-r--r--src/assets/javascripts/helpers/imgur.js4
-rw-r--r--src/assets/javascripts/helpers/maps.js127
-rw-r--r--src/assets/javascripts/helpers/reddit.js3
-rw-r--r--src/pages/options/maps/maps.html30
-rw-r--r--src/pages/options/maps/maps.js25
-rw-r--r--src/pages/options/reddit/reddit.js1
-rw-r--r--src/pages/options/twitter/twitter.js1
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();