Skip to content

Commit f1a61ce

Browse files
committed
Storage versions on local storage
Storage three version: - Manual/API - Playground - React
1 parent 318ac31 commit f1a61ce

File tree

8 files changed

+45
-31
lines changed

8 files changed

+45
-31
lines changed

src/ApiDocs.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ module SidebarTree = {
170170
open Url
171171
ReactEvent.Form.preventDefault(evt)
172172
let version = (evt->ReactEvent.Form.target)["value"]
173+
WebAPI.Storage.setItem(localStorage, ~key=(Manual :> string), ~value=version)
173174
let url = Url.parse(router.asPath)
174175
switch url.pagepath[1] {
175176
| Some("core") | Some("stdlib") =>

src/DocsOverview.res

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -30,35 +30,8 @@ let default = (~showVersionSelect=true) => {
3030
("Reanalyze", "https://github.com/rescript-lang/reanalyze"),
3131
]
3232

33-
let versionSelect = if showVersionSelect {
34-
let onChange = evt => {
35-
open Url
36-
ReactEvent.Form.preventDefault(evt)
37-
let version = (evt->ReactEvent.Form.target)["value"]
38-
let url = Url.parse(router.route)
39-
40-
let targetUrl =
41-
"/" ++
42-
(Array.join(url.base, "/") ++
43-
("/" ++ (version ++ ("/" ++ Array.join(url.pagepath, "/")))))
44-
router->Next.Router.push(targetUrl)
45-
}
46-
47-
<div className="text-fire">
48-
<VersionSelect
49-
availableVersions=Constants.allManualVersions
50-
nextVersion=?Constants.nextVersion
51-
onChange
52-
version
53-
/>
54-
</div>
55-
} else {
56-
React.null
57-
}
58-
5933
<>
6034
<div>
61-
versionSelect
6235
<div className="mb-6" />
6336
<Markdown.H1> {React.string("Docs")} </Markdown.H1>
6437
</div>

src/Playground.res

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -886,7 +886,9 @@ module Settings = {
886886
ReactEvent.Form.preventDefault(evt)
887887
let id: string = (evt->ReactEvent.Form.target)["value"]
888888
switch id->Semver.parse {
889-
| Some(v) => onCompilerSelect(v)
889+
| Some(v) =>
890+
onCompilerSelect(v)
891+
WebAPI.Storage.setItem(localStorage, ~key=(Url.Playground :> string), ~value=id)
890892
| None => ()
891893
}
892894
}}>
@@ -1417,7 +1419,11 @@ let make = (~versions: array<string>) => {
14171419

14181420
let initialVersion = switch Dict.get(router.query, "version") {
14191421
| Some(version) => version->Semver.parse
1420-
| None => lastStableVersion
1422+
| None =>
1423+
switch Url.getVersionFromStorage(Playground) {
1424+
| Some(v) => v->Semver.parse
1425+
| None => lastStableVersion
1426+
}
14211427
}
14221428

14231429
let initialLang = switch Dict.get(router.query, "ext") {

src/common/Url.res

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,20 @@ let parse = (route: string): t => {
8181
{fullpath, base, version, pagepath}
8282
}
8383

84+
@unboxed
85+
type storageKey =
86+
| @as("manual_version") Manual
87+
| @as("react_version") React
88+
| @as("playground_version") Playground
89+
90+
let getVersionFromStorage = (key: storageKey) => {
91+
try {
92+
WebAPI.Storage.getItem(window.localStorage, (key :> string))->Null.toOption
93+
} catch {
94+
| JsExn(_) => None
95+
}
96+
}
97+
8498
let getVersionString = url =>
8599
switch url.version {
86100
| Next => Constants.versions.next

src/common/Url.resi

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,12 @@ let parse: string => t
2121

2222
let prettyString: string => string
2323

24+
@unboxed
25+
type storageKey =
26+
| @as("manual_version") Manual
27+
| @as("react_version") React
28+
| @as("playground_version") Playground
29+
30+
let getVersionFromStorage: storageKey => option<string>
31+
2432
let getVersionString: t => string

src/components/Navigation.res

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,10 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
7777
let router = Next.Router.useRouter()
7878
let route = router.route
7979
let url = router.route->Url.parse
80-
let version = url->Url.getVersionString
80+
let verionFromUrl = url->Url.getVersionString
81+
82+
let version = Url.getVersionFromStorage(Manual)->Option.getOr(Constants.versions.latest)
83+
let reactVersion = Url.getVersionFromStorage(React)->Option.getOr(verionFromUrl)
8184

8285
let toggleOverlay = () => {
8386
setOverlayOpen(prev => !prev)
@@ -188,7 +191,7 @@ let make = (~fixed=true, ~isOverlayOpen: bool, ~setOverlayOpen: (bool => bool) =
188191
{React.string("Syntax Lookup")}
189192
</Link>
190193
<Link
191-
href={`/docs/react/latest/introduction`}
194+
href={`/docs/react/${reactVersion}/introduction`}
192195
className={isActiveLink(~includes="/docs/react/", ~route)}>
193196
{React.string("React")}
194197
</Link>

src/layouts/ApiLayout.res

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ let make = (
105105
ReactEvent.Form.preventDefault(evt)
106106
let version = (evt->ReactEvent.Form.target)["value"]
107107
let url = Url.parse(route)
108+
WebAPI.Storage.setItem(localStorage, ~key=(Url.Manual :> string), ~value=version)
108109

109110
let targetUrl =
110111
"/" ++

src/layouts/DocsLayout.res

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,14 @@ let make = (
9494
ReactEvent.Form.preventDefault(evt)
9595
let version = (evt->ReactEvent.Form.target)["value"]
9696
let url = Url.parse(route)
97+
WebAPI.Storage.setItem(
98+
localStorage,
99+
~key=switch metaTitleCategory {
100+
| "React" => (React :> string)
101+
| _ => (Manual :> string)
102+
},
103+
~value=version,
104+
)
97105

98106
let targetUrl =
99107
"/" ++

0 commit comments

Comments
 (0)