From a69563cb9ba1f9104c1099a205052c5c783b580f Mon Sep 17 00:00:00 2001 From: Kaspars Jaudzems Date: Sun, 12 May 2024 19:23:08 +0300 Subject: [PATCH] repl: set document.title from @title (#1090) * fixes #811 set document.title from @title --- website/src/repl/Repl.jsx | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx index 9c472eb4..d709d058 100644 --- a/website/src/repl/Repl.jsx +++ b/website/src/repl/Repl.jsx @@ -38,6 +38,7 @@ import { getRandomTune, initCode, loadModules, shareCode, ReplContext } from './ import PlayCircleIcon from '@heroicons/react/20/solid/PlayCircleIcon'; import './Repl.css'; import { setInterval, clearInterval } from 'worker-timers'; +import { getMetadata } from '../metadata_parser'; const { latestCode } = settingsMap.get(); @@ -91,6 +92,7 @@ export function Repl({ embedded = false }) { const { code } = all; setLatestCode(code); window.location.hash = '#' + code2hash(code); + setDocumentTitle(code); const viewingPatternData = getViewingPatternData(); const data = { ...viewingPatternData, code }; let id = data.id; @@ -116,18 +118,20 @@ export function Repl({ embedded = false }) { // init settings initCode().then(async (decoded) => { - let msg; + let code, msg; if (decoded) { - editor.setCode(decoded); + code = decoded; msg = `I have loaded the code from the URL.`; } else if (latestCode) { - editor.setCode(latestCode); + code = latestCode; msg = `Your last session has been loaded!`; } else { const { code: randomTune, name } = await getRandomTune(); - editor.setCode(randomTune); + code = randomTune; msg = `A random code snippet named "${name}" has been loaded!`; } + editor.setCode(code); + setDocumentTitle(code); logger(`Welcome to Strudel! ${msg} Press play or hit ctrl+enter to run it!`, 'highlight'); }); @@ -170,6 +174,11 @@ export function Repl({ embedded = false }) { // UI Actions // + const setDocumentTitle = (code) => { + const meta = getMetadata(code); + document.title = (meta.title ? `${meta.title} - ` : '') + 'Strudel REPL'; + }; + const handleTogglePlay = async () => { editorRef.current?.toggle(); };