404 redirect if wrong locale or page
This commit is contained in:
parent
ca98c48a5c
commit
cbb6920ebf
3 changed files with 46 additions and 18 deletions
|
@ -1,4 +1,6 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
|
import { browser } from '$app/environment';
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
import { _, locale } from 'svelte-i18n';
|
import { _, locale } from 'svelte-i18n';
|
||||||
|
|
||||||
export let path: string;
|
export let path: string;
|
||||||
|
@ -17,7 +19,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
$: if ($locale) {
|
$: if ($locale) {
|
||||||
loadModule(`/src/lib/docs/${$locale}/${path}`);
|
if (modules.hasOwnProperty(`/src/lib/docs/${$locale}/${path}`)) {
|
||||||
|
loadModule(`/src/lib/docs/${$locale}/${path}`);
|
||||||
|
} else if (browser) {
|
||||||
|
goto(`/404`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
|
@ -51,11 +51,15 @@ export function getPreviousGuide(currentGuide: string): string | undefined {
|
||||||
return `${previousGuide}/${guides[previousGuide][guides[previousGuide].length - 1]}`;
|
return `${previousGuide}/${guides[previousGuide][guides[previousGuide].length - 1]}`;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let subguideIndex = guides[subguides[0]].indexOf(subguides[1]);
|
if (guides.hasOwnProperty(subguides[0])) {
|
||||||
if (subguideIndex > 0) {
|
let subguideIndex = guides[subguides[0]].indexOf(subguides[1]);
|
||||||
return `${subguides[0]}/${guides[subguides[0]][subguideIndex - 1]}`;
|
if (subguideIndex > 0) {
|
||||||
|
return `${subguides[0]}/${guides[subguides[0]][subguideIndex - 1]}`;
|
||||||
|
} else {
|
||||||
|
return subguides[0];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return subguides[0];
|
return undefined;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,21 +68,29 @@ export function getNextGuide(currentGuide: string): string | undefined {
|
||||||
let subguides = currentGuide.split('/');
|
let subguides = currentGuide.split('/');
|
||||||
|
|
||||||
if (subguides.length === 1) {
|
if (subguides.length === 1) {
|
||||||
if (guides[currentGuide].length === 0) {
|
if (guides.hasOwnProperty(currentGuide)) {
|
||||||
let keys = Object.keys(guides);
|
if (guides[currentGuide].length === 0) {
|
||||||
let index = keys.indexOf(currentGuide);
|
let keys = Object.keys(guides);
|
||||||
return keys[index + 1];
|
let index = keys.indexOf(currentGuide);
|
||||||
|
return keys[index + 1];
|
||||||
|
} else {
|
||||||
|
return `${currentGuide}/${guides[currentGuide][0]}`;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return `${currentGuide}/${guides[currentGuide][0]}`;
|
return undefined;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let subguideIndex = guides[subguides[0]].indexOf(subguides[1]);
|
if (guides.hasOwnProperty(subguides[0])) {
|
||||||
if (subguideIndex < guides[subguides[0]].length - 1) {
|
let subguideIndex = guides[subguides[0]].indexOf(subguides[1]);
|
||||||
return `${subguides[0]}/${guides[subguides[0]][subguideIndex + 1]}`;
|
if (subguideIndex < guides[subguides[0]].length - 1) {
|
||||||
|
return `${subguides[0]}/${guides[subguides[0]][subguideIndex + 1]}`;
|
||||||
|
} else {
|
||||||
|
let keys = Object.keys(guides);
|
||||||
|
let index = keys.indexOf(subguides[0]);
|
||||||
|
return keys[index + 1];
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
let keys = Object.keys(guides);
|
return undefined;
|
||||||
let index = keys.indexOf(subguides[0]);
|
|
||||||
return keys[index + 1];
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -6,11 +6,21 @@
|
||||||
import Head from '$lib/components/Head.svelte';
|
import Head from '$lib/components/Head.svelte';
|
||||||
import Nav from '$lib/components/Nav.svelte';
|
import Nav from '$lib/components/Nav.svelte';
|
||||||
import Footer from '$lib/components/Footer.svelte';
|
import Footer from '$lib/components/Footer.svelte';
|
||||||
|
import { languages } from '$lib/languages';
|
||||||
|
import { browser } from '$app/environment';
|
||||||
|
import { goto } from '$app/navigation';
|
||||||
|
|
||||||
$: if ($page.params.language === '' && $locale !== 'en') {
|
$: if ($page.params.language === '' && $locale !== 'en') {
|
||||||
locale.set('en');
|
locale.set('en');
|
||||||
} else if ($page.params.language && $locale !== $page.params.language) {
|
} else if ($page.params.language) {
|
||||||
locale.set($page.params.language.replace('/', ''));
|
let lang = $page.params.language.replace('/', '');
|
||||||
|
if ($locale !== lang) {
|
||||||
|
if (languages.hasOwnProperty(lang)) {
|
||||||
|
locale.set(lang);
|
||||||
|
} else if (browser) {
|
||||||
|
goto('/404');
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const appRoutes = ['/[...language]/app', '/[...language]/embed'];
|
const appRoutes = ['/[...language]/app', '/[...language]/embed'];
|
||||||
|
|
Loading…
Reference in a new issue