Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 44d6929

Browse files
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‎

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)

AltStyle によって変換されたページ (->オリジナル) /