ctucx.git: trainsearch

web based trip-planner, fork of https://cyberchaos.dev/yuka/trainsearch

commit e3955153684675c3e3bcba9e1e2bcab448114205
parent c75c44d1016affc629d86450c89ad557abfbd132
Author: Yureka <yuka@yuka.dev>
Date: Sun, 13 Feb 2022 18:24:47 +0100

prevent infinite loop when going back in journeysView
4 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/src/journeyView.js b/src/journeyView.js
@@ -160,7 +160,7 @@ const journeyTemplate = (data) => {
 		<div class="journey">
 			<header>
 				${data.slug ? html`
-					<a class="back icon-back" href="#/${data.slug}" title="${t('back')}">${t('back')}</a>
+					<a class="back icon-back" href="#/${data.slug}/${settings.journeysViewMode}" title="${t('back')}">${t('back')}</a>
 				` : html`
 					<a class="back icon-back invisible"></a>
 				`}
diff --git a/src/journeysView.js b/src/journeysView.js
@@ -122,8 +122,7 @@ const journeyOverviewTemplate = (entry, slug, key) => {
 
 export const journeysView = async (match, isUpdate) => {
 	const slug = match[0];
-	const mode = match[1] && match[1].substring(1);
-	if (!mode) return go(`/${slug}/${settings.journeysViewMode || "canvas"}`);
+	const mode = match[1];
 
 	if (settings.journeysViewMode != mode) {
 		await modifySettings(settings => {

@@ -162,7 +161,7 @@ export const moreJourneys = async (slug, mode) => {
 		throw e;
 	}
 	hideOverlay();
-	journeysView([slug, `/${settings.journeysViewMode}`], true);
+	journeysView([slug, settings.journeysViewMode], true);
 };
 
 const refreshJourneysView = async (slug) => {

@@ -174,6 +173,6 @@ const refreshJourneysView = async (slug) => {
 		document.querySelector('.reload').classList.remove('spinning');
 		throw e;
 	}
-	journeysView([slug, `/${settings.journeysViewMode}`], true);
+	journeysView([slug, settings.journeysViewMode], true);
 	document.querySelector('.reload').classList.remove('spinning');
 };
diff --git a/src/main.js b/src/main.js
@@ -20,7 +20,7 @@ import { showDiv, hideDiv, ElementById } from './helpers.js';
 	]);
 
 	route(/^\/$/, searchView);
-	route(/^\/([a-zA-Z0-9]+)(\/[a-z]+)?$/, journeysView);
+	route(/^\/([a-zA-Z0-9]+)\/([a-z]+)$/, journeysView);
 	route(/^\/j\/(.+)$/, journeyView);
 
 	hideDiv('overlay');
diff --git a/src/searchView.js b/src/searchView.js
@@ -159,7 +159,7 @@ const journeysHistoryAction = (journeysHistory, element) => {
 	ConsoleLog(element);
 	showSelectModal(html`
 		<a @click=${() => {setFromHistory(journeysHistory.length - 1 - journeysHistory.indexOf(element));hideOverlay();}}>${t('setfromto')}</a>
-		<a @click=${() => {go('/'+element.slug);hideOverlay();}}>${t('journeyoverview')}</a>
+		<a @click=${() => {go('/'+element.slug+'/'+settings.journeysViewMode);hideOverlay();}}>${t('journeyoverview')}</a>
 		${element.journeyId === '' ? '' : html`
 			<a @click=${() => {go('/'+element.slug+'/'+element.journeyId);hideOverlay();}}>${t('lastjourney')}</a>
 		`}

@@ -293,7 +293,7 @@ export const search = async (requestId) => {
 		throw e;
 	}
 	hideOverlay();
-	go(`/${data.slug}`);
+	go(`/${data.slug}/${settings.journeysViewMode}`);
 	return false;
 };