Skip to content

Commit dc3a56b

Browse files
committed
always route the user to the complete path ensuring that all sub languages and all snippets slugified strings are included in the uri
1 parent be5c643 commit dc3a56b

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/AppRouter.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ const AppRouter = () => {
99
<Route element={<App />}>
1010
<Route path="/" element={<SnippetList />} />
1111
<Route path="/:languageName" element={<SnippetList />} />
12+
<Route
13+
path="/:languageName/:subLanguageName"
14+
element={<SnippetList />}
15+
/>
1216
<Route
1317
path="/:languageName/:subLanguageName/:categoryName"
1418
element={<SnippetList />}

src/contexts/AppContext.tsx

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@ import { useNavigate, useParams } from "react-router-dom";
44
import { useLanguages } from "@hooks/useLanguages";
55
import { AppState, LanguageType, SnippetType } from "@types";
66
import { configureUserSelection } from "@utils/configureUserSelection";
7-
import { defaultLanguage, defaultState } from "@utils/consts";
7+
import {
8+
defaultCategoryName,
9+
defaultLanguage,
10+
defaultSlugifiedSubLanguageName,
11+
defaultState,
12+
} from "@utils/consts";
813
import { slugify } from "@utils/slugify";
914

1015
const AppContext = createContext<AppState>(defaultState);
@@ -46,8 +51,16 @@ export const AppProvider: FC<{ children: React.ReactNode }> = ({
4651
* Set the default language if the language is not found in the URL.
4752
*/
4853
useEffect(() => {
49-
if (languageName === undefined) {
50-
navigate(`/${slugify(defaultLanguage.name)}`, { replace: true });
54+
const resolvedLanguage = languageName || defaultLanguage.name;
55+
const resolvedSubLanguage =
56+
subLanguageName || defaultSlugifiedSubLanguageName;
57+
const resolvedCategory = categoryName || defaultCategoryName;
58+
59+
if (!languageName || !subLanguageName || !categoryName) {
60+
navigate(
61+
`/${slugify(resolvedLanguage)}/${slugify(resolvedSubLanguage)}/${slugify(resolvedCategory)}`,
62+
{ replace: true }
63+
);
5164
}
5265
// eslint-disable-next-line react-hooks/exhaustive-deps
5366
}, []);

0 commit comments

Comments
 (0)