diff --git a/src/app/Router.ts b/src/app/Router.ts index 4f6b3d91..a433b53b 100644 --- a/src/app/Router.ts +++ b/src/app/Router.ts @@ -1,6 +1,7 @@ import { App, checkVersion, Models } from './App'; import { View } from './views/View'; import { Home } from './views/Home' +import { NotFound } from './views/NotFound' import { FieldSettings } from './views/FieldSettings' import { Generator } from './views/Generator' import { locale } from './Locales'; @@ -29,16 +30,19 @@ const router = async () => { renderer = Home } else { panel = 'tree' - App.model.set(config.models.find(m => m.id === urlParts.join('/'))!) - if (urlParams.has('q')) { - try { - const data = atob(urlParams.get('q') ?? '') - Models[App.model.get()!.id].reset(JSON.parse(data)) - } catch (e) {} - } - renderer = Generator - if (App.model.get()) { - title = locale('title.generator', [locale(App.model.get()!.id)]) + const model = config.models.find(m => m.id === urlParts.join('/')) ?? null + App.model.set(model) + if (model) { + if (urlParams.has('q')) { + try { + const data = atob(urlParams.get('q') ?? '') + Models[model.id].reset(JSON.parse(data)) + } catch (e) {} + } + renderer = Generator + title = locale('title.generator', [locale(model.id)]) + } else { + renderer = NotFound } } diff --git a/src/app/views/Home.ts b/src/app/views/Home.ts index 977c969f..da528951 100644 --- a/src/app/views/Home.ts +++ b/src/app/views/Home.ts @@ -4,9 +4,14 @@ import { View } from './View' import { Octicon } from '../components/Octicon' import config from '../../config.json' -const GeneratorCard = (url: string, name: string, arrow?: boolean, active?: boolean) => ` +function cleanUrl(url: string) { + url = url.startsWith('/') ? url : '/' + url + return url.endsWith('/') ? url : url + '/' +} + +export const GeneratorCard = (url: string, name: string, arrow?: boolean, active?: boolean) => `
${locale('not_found.description')}
+