Skip to content

Commit ebc4b4b

Browse files
authored
Merge pull request #8539 from vdusart/feat/redirect-after-language-choice
Redirection after language choice
2 parents 8677d85 + bcac538 commit ebc4b4b

File tree

3 files changed

+20
-32
lines changed

3 files changed

+20
-32
lines changed

src/components/Nav/Mobile.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,7 @@ export interface IProps {
269269
toggleMenu: (item?: "search" | "menu") => void
270270
toggleTheme: () => void
271271
linkSections: ISections
272+
fromPageParameter: string
272273
}
273274

274275
const MobileNavMenu: React.FC<IProps> = ({
@@ -278,6 +279,7 @@ const MobileNavMenu: React.FC<IProps> = ({
278279
toggleMenu,
279280
toggleTheme,
280281
linkSections,
282+
fromPageParameter,
281283
}) => {
282284
const intl = useIntl()
283285

@@ -391,7 +393,7 @@ const MobileNavMenu: React.FC<IProps> = ({
391393
</BottomItemText>
392394
</BottomItem>
393395
<BottomItem onClick={handleClick}>
394-
<BottomLink to="/languages/">
396+
<BottomLink to={`/languages/${fromPageParameter}`}>
395397
<MenuIcon name="language" />
396398
<BottomItemText>
397399
<Translation id="languages" />

src/components/Nav/index.tsx

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useState } from "react"
2-
import { Flex, Icon, IconButton, Text, useColorMode } from "@chakra-ui/react"
2+
import { Icon, IconButton, Text, useColorMode } from "@chakra-ui/react"
33
import { MdWbSunny, MdBrightness2, MdLanguage } from "react-icons/md"
44
import styled from "@emotion/styled"
55
import { cloneDeep } from "lodash"
@@ -8,7 +8,6 @@ import { useIntl } from "react-intl"
88
import Menu from "./Menu"
99
import MobileNavMenu from "./Mobile"
1010
import ButtonLink from "../ButtonLink"
11-
import NakedButton from "../NakedButton"
1211
import Link from "../Link"
1312
import Search from "../Search"
1413
import Translation from "../Translation"
@@ -97,25 +96,6 @@ const HomeLogo = styled(HomeIcon)`
9796
}
9897
`
9998

100-
const Span = styled.span`
101-
padding-left: 0.5rem;
102-
`
103-
104-
const ThemeToggle = styled(NakedButton)`
105-
margin-left: 1rem;
106-
display: flex;
107-
align-items: center;
108-
&:hover {
109-
svg {
110-
fill: ${(props) => props.theme.colors.primary};
111-
}
112-
}
113-
`
114-
115-
const NavIcon = styled(Icon)`
116-
fill: ${(props) => props.theme.colors.text};
117-
`
118-
11999
export interface IProps {
120100
path: string
121101
}
@@ -400,7 +380,11 @@ const Nav: React.FC<IProps> = ({ path }) => {
400380
}
401381

402382
const shouldShowSubNav = path.includes("/developers/")
403-
383+
const splitPath = path.split("/")
384+
const fromPageParameter =
385+
splitPath.length > 3 && splitPath[2] !== "languages"
386+
? `?from=/${splitPath.slice(2).join("/")}`
387+
: ""
404388
return (
405389
<NavContainer>
406390
<StyledNav aria-label={translateMessageId("nav-primary", intl)}>
@@ -429,7 +413,7 @@ const Nav: React.FC<IProps> = ({ path }) => {
429413
_hover={{ color: "primary" }}
430414
onClick={toggleColorMode}
431415
/>
432-
<ButtonLink to="/languages/" variant="icon">
416+
<ButtonLink to={`/languages/${fromPageParameter}`} variant="icon">
433417
<Icon as={MdLanguage} fontSize="2xl" />
434418
<Text as="span" pl={2}>
435419
<Translation id="languages" />
@@ -445,6 +429,7 @@ const Nav: React.FC<IProps> = ({ path }) => {
445429
toggleMenu={handleMenuToggle}
446430
toggleTheme={toggleColorMode}
447431
linkSections={mobileLinkSections}
432+
fromPageParameter={fromPageParameter}
448433
/>
449434
</NavContent>
450435
</StyledNav>

src/pages/languages.tsx

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11
import React, { useState } from "react"
22
import styled from "@emotion/styled"
3+
import { useLocation } from "@reach/router"
34
import { useIntl } from "react-intl"
45

56
import PageMetadata from "../components/PageMetadata"
67
import Translation from "../components/Translation"
78
import Link from "../components/Link"
89
import { Page, Content } from "../components/SharedStyledComponents"
910

10-
import { Lang, Language, languageMetadata } from "../utils/languages"
11+
import { Language, languageMetadata } from "../utils/languages"
1112
import { translateMessageId, TranslationKey } from "../utils/translations"
1213
import { CardItem as LangItem } from "../components/SharedStyledComponents"
1314
import Icon from "../components/Icon"
@@ -68,12 +69,13 @@ const ResetIcon = styled(Icon)`
6869
fill: ${(props) => props.theme.colors.text};
6970
`
7071

71-
interface TranslatedLanguage extends Language {
72-
path: string
73-
}
74-
7572
const LanguagesPage = () => {
7673
const intl = useIntl()
74+
const location = useLocation()
75+
const redirectTo =
76+
location.search.split("from=").length > 1
77+
? location.search.split("from=")[1]
78+
: "/"
7779
const [keyword, setKeyword] = useState<string>("")
7880
const resetKeyword = (e: React.MouseEvent<HTMLButtonElement>) => {
7981
e.preventDefault()
@@ -83,11 +85,10 @@ const LanguagesPage = () => {
8385
"page-languages-filter-placeholder",
8486
intl
8587
)
86-
let translationsCompleted: Array<TranslatedLanguage> = []
88+
let translationsCompleted: Array<Language> = []
8789
for (const lang in languageMetadata) {
8890
const langMetadata = {
8991
...languageMetadata[lang],
90-
path: "/",
9192
name: translateMessageId(`language-${lang}` as TranslationKey, intl),
9293
}
9394

@@ -147,7 +148,7 @@ const LanguagesPage = () => {
147148
</Form>
148149
<LangContainer>
149150
{translationsCompleted.map((lang) => (
150-
<LangItem to={lang.path} language={lang.code} key={lang["name"]}>
151+
<LangItem to={redirectTo} language={lang.code} key={lang["name"]}>
151152
<LangTitle>{lang["name"]}</LangTitle>
152153
<h4>{lang.localName}</h4>
153154
</LangItem>

0 commit comments

Comments
 (0)