]> git.openstreetmap.org Git - nominatim-ui.git/blobdiff - src/lib/stores.js
Merge remote-tracking branch 'upstream/master'
[nominatim-ui.git] / src / lib / stores.js
index a7a524a3b4f738cf3f5ef4abec407dba552ccf42..00b41959379e6b606c4b0a40040fb8bfb74f9d0d 100644 (file)
@@ -3,6 +3,7 @@ import { writable } from 'svelte/store';
 export const map_store = writable();
 export const results_store = writable();
 export const last_api_request_url_store = writable();
+export const error_store = writable();
 export const page = writable();
 
 /**
@@ -15,13 +16,13 @@ export const page = writable();
  * the requested query parameters. It may also be omitted completely for a
  * link without query parameters.
  */
+const pagenames = ['search', 'reverse', 'details', 'deletable', 'polygons', 'about'];
+
 export function refresh_page(pagename, params) {
   if (typeof pagename === 'undefined') {
     pagename = window.location.pathname.replace('.html', '').replace(/^.*\//, '');
 
-    if (['search', 'reverse', 'details', 'deletable', 'polygons'].indexOf(pagename) === -1) {
-      pagename = 'search';
-    }
+    if (!pagenames.includes(pagename)) pagename = 'search';
 
     params = new URLSearchParams(window.location.search);
   } else {
@@ -33,8 +34,16 @@ export function refresh_page(pagename, params) {
     if (param_str) {
       param_str = '?' + param_str;
     }
-    window.history.pushState([], '', pagename + '.html' + param_str);
+    let new_url = pagename + '.html' + param_str;
+
+    if (window.location.protocol.match(/^http/)) {
+      window.history.pushState([], '', new_url);
+    } else {
+      window.location.href = new_url;
+    }
   }
 
   page.set({ tab: pagename, params: params });
+  last_api_request_url_store.set(null);
+  error_store.set(null);
 }