Skip to content

Commit 9cbd8e5

Browse files
fix(code-explorer): reset the share code hash from the URL after page load (#108)
1 parent 2afa676 commit 9cbd8e5

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

src/pages/GodboltPage/GodboltPage.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ import type {TolkCompilationResult} from "@features/godbolt/lib/tolk/types.ts"
3232
import {useGodboltSettings} from "./hooks/useGodboltSettings"
3333
import {useFuncCompilation} from "./hooks/useFuncCompilation.ts"
3434
import {useTolkCompilation} from "./hooks/useTolkCompilation.ts"
35-
import {decodeCodeFromUrl, decodeLanguageFromUrl} from "./urlCodeSharing"
35+
import {clearShareHash, decodeCodeFromUrl, decodeLanguageFromUrl} from "./urlCodeSharing"
3636

3737
import styles from "./GodboltPage.module.css"
3838

@@ -58,7 +58,7 @@ const DEFAULT_FUNC_CODE = `#include "stdlib.fc";
5858
}
5959
slice s_addr = cs~load_msg_addr();
6060
(int wc, int addr_hash) = parse_std_addr(s_addr);
61-
61+
6262
;; ... other code
6363
6464
throw(wc + addr_hash);
@@ -152,20 +152,25 @@ function GodboltPage() {
152152
const [initiallyCompiled, setInitiallyCompiled] = useState<boolean>(false)
153153
const [language, setLanguage] = useState<CodeLanguage>(() => {
154154
const fromUrl = decodeLanguageFromUrl()
155-
if (fromUrl) return fromUrl
155+
if (fromUrl != null) {
156+
clearShareHash()
157+
return fromUrl
158+
}
156159
const saved = localStorage.getItem(STORAGE_LANG_KEY)
157160
return saved === "tolk" ? "tolk" : "func"
158161
})
159162
const [funcCode, setFuncCode] = useState(() => {
160163
const sharedCode = decodeCodeFromUrl()
161-
if (sharedCode && (decodeLanguageFromUrl() ?? "func") === "func") {
164+
if (sharedCode !== null && (decodeLanguageFromUrl() ?? "func") === "func") {
165+
clearShareHash()
162166
return sharedCode
163167
}
164168
return localStorage.getItem(FUNC_EDITOR_KEY) ?? DEFAULT_FUNC_CODE
165169
})
166170
const [tolkCode, setTolkCode] = useState(() => {
167171
const sharedCode = decodeCodeFromUrl()
168-
if (sharedCode && decodeLanguageFromUrl() === "tolk") {
172+
if (sharedCode != null && decodeLanguageFromUrl() === "tolk") {
173+
clearShareHash()
169174
return sharedCode
170175
}
171176
return localStorage.getItem("txtracer-godbolt-tolk-code") ?? DEFAULT_TOLK_CODE

src/pages/GodboltPage/urlCodeSharing.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,3 +60,7 @@ export function decodeLanguageFromUrl(): "func" | "tolk" | null {
6060
return null
6161
}
6262
}
63+
64+
export function clearShareHash(): void {
65+
window.history.pushState({}, document.title, window.location.pathname)
66+
}

src/pages/PlaygroundPage/PlaygroundPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import PageHeader from "@shared/ui/PageHeader"
1414
import Tutorial, {useTutorial} from "@shared/ui/Tutorial"
1515

1616
import ShareButton from "@shared/ui/ShareButton/ShareButton.tsx"
17-
import {decodeCodeFromUrl} from "@app/pages/GodboltPage/urlCodeSharing.ts"
17+
import {clearShareHash, decodeCodeFromUrl} from "@app/pages/GodboltPage/urlCodeSharing.ts"
1818

1919
import {ExecuteButton} from "@app/pages/PlaygroundPage/components/ExecuteButton.tsx"
2020

@@ -41,7 +41,8 @@ const INITIAL_STACK_STORAGE_KEY = "txtracer-playground-initial-stack"
4141
function PlaygroundPage() {
4242
const [assemblyCode, setAssemblyCode] = useState(() => {
4343
const sharedCode = decodeCodeFromUrl()
44-
if (sharedCode) {
44+
if (sharedCode !== null) {
45+
clearShareHash()
4546
return sharedCode
4647
}
4748
return localStorage.getItem(LOCAL_STORAGE_KEY) ?? DEFAULT_ASSEMBLY_CODE

0 commit comments

Comments
 (0)