commit 57e7da9c0e7274dc2b5a2919ef8a3c4d9598ccfa
parent e70c746f4cbf6d48cb5f3eab4012f5235080476a
Author: Yureka <yuka@yuka.dev>
Date: Sat, 10 Sep 2022 15:43:46 +0200
parent e70c746f4cbf6d48cb5f3eab4012f5235080476a
Author: Yureka <yuka@yuka.dev>
Date: Sat, 10 Sep 2022 15:43:46 +0200
redirect to search page on errors
4 files changed, 41 insertions(+), 26 deletions(-)
diff --git a/src/app_functions.js b/src/app_functions.js @@ -84,6 +84,7 @@ const processJourney = journey => { export const getJourneys = async slug => { let data = await db.getJourneysOverview(slug); + if (!data) return null; return { ...data, journeys: await Promise.all(data.journeys.map(x => getJourney(x, data.profile))),
diff --git a/src/journeyView.js b/src/journeyView.js @@ -194,8 +194,10 @@ export const journeyView = async (match, isUpdate) => { refreshToken = decodeURIComponent(match[1]); data = await getJourney(refreshToken, profile); } catch(e) { - showAlertModal(e.toString()); - throw e; + console.error(e); + await showAlertModal(e.toString()); + go('/'); + return; } hideOverlay();
diff --git a/src/journeysView.js b/src/journeysView.js @@ -136,9 +136,15 @@ export const journeysView = async (match, isUpdate) => { try { data = await getJourneys(slug); } catch(e) { - showAlertModal(e.toString()); + await showAlertModal(e.toString()); + go('/'); throw e; } + if (!data) { + await showAlertModal(html`journeys overview id invalid. <br />journeys overview links can not be shared across devices in TrainSearch :(`); + go('/'); + return; + } hideOverlay(); render(journeysTemplate(data), ElementById('content'));
diff --git a/src/overlays.js b/src/overlays.js @@ -3,41 +3,47 @@ import { html, render } from 'lit-html'; export const showAlertModal = (text) => { showDiv('overlay'); - render(html` - <div class="modal"> - <div class="box alert"> - ${text} - <div class="button" @click=${hideOverlay}>OK</div> + return new Promise(resolve => { + render(html` + <div class="modal"> + <div class="box alert"> + ${text} + <div class="button" @click=${() => { hideOverlay(); resolve(); }}>OK</div> + </div> </div> - </div> - `, ElementById('overlay')); + `, ElementById('overlay')); + }); }; export const showSelectModal = (content) => { showDiv('overlay'); - render(html` - <div class="modal"> - <div class="box select"> - ${content} - <a @click=${hideOverlay}>Close</a> + return new Promise(resolve => { + render(html` + <div class="modal"> + <div class="box select"> + ${content} + <a @click=${() => { hideOverlay(); resolve(); }}>Close</a> + </div> </div> - </div> - `, ElementById('overlay')); + `, ElementById('overlay')); + }); }; export const showModal = (title, content) => { showDiv('overlay'); - render(html` - <div class="modal-dialog"> - <div id="modal-content" class="modal-content"> - <div class="modal-header"> - <div class="modal-close" @click=${() => hideDiv('overlay')}></div> - <h4 class="modal-title">${title}</h4> + return new Promise(resolve => { + render(html` + <div class="modal-dialog"> + <div id="modal-content" class="modal-content"> + <div class="modal-header"> + <div class="modal-close" @click=${() => { hideOverlay(); resolve(); }}></div> + <h4 class="modal-title">${title}</h4> + </div> + <div class="modal-body">${content}</div> </div> - <div class="modal-body">${content}</div> </div> - </div> - `, ElementById('overlay')); + `, ElementById('overlay')); + }); }; export const showLoader = () => {