Skip to content

Commit 44d6929

Browse files
authored
Merge pull request #257 from barrymun/bug/route-path
[Bug] - The user should always be redirected to the complete URL path
2 parents 595186b + dc3a56b commit 44d6929

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

src/AppRouter.tsx

+4
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

+16-3
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)