From a45d87667fbb8de41a8f629994e0fbb4141f843a Mon Sep 17 00:00:00 2001 From: Felix Roos Date: Thu, 7 Dec 2023 20:17:01 +0100 Subject: [PATCH] fix: update / fork logic --- website/src/repl/Repl.jsx | 4 ++-- website/src/settings.mjs | 12 ++++++++++-- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/website/src/repl/Repl.jsx b/website/src/repl/Repl.jsx index 8deaa4f8..3d3117ae 100644 --- a/website/src/repl/Repl.jsx +++ b/website/src/repl/Repl.jsx @@ -17,7 +17,7 @@ import { prebake } from './prebake.mjs'; import * as tunes from './tunes.mjs'; import PlayCircleIcon from '@heroicons/react/20/solid/PlayCircleIcon'; import { themes } from './themes.mjs'; -import { settingsMap, useSettings, setLatestCode, updateUserPattern } from '../settings.mjs'; +import { settingsMap, useSettings, setLatestCode, updateUserCode } from '../settings.mjs'; import Loader from './Loader'; import { settingPatterns } from '../settings.mjs'; import { code2hash, hash2code } from './helpers.mjs'; @@ -148,7 +148,7 @@ export function Repl({ embedded = false }) { cleanupDraw(); }, afterEval: ({ code, meta }) => { - updateUserPattern(code); + updateUserCode(code); setMiniLocations(meta.miniLocations); setWidgets(meta.widgets); setPending(false); diff --git a/website/src/settings.mjs b/website/src/settings.mjs index 2f9feaae..32bad5c1 100644 --- a/website/src/settings.mjs +++ b/website/src/settings.mjs @@ -126,14 +126,22 @@ export function renameActivePattern() { setActivePattern(newName); } -export function updateUserPattern(code) { +export function updateUserCode(code) { const userPatterns = getUserPatterns(); let activePattern = getSetting('activePattern'); + // check if code is that of an example tune + const [example] = Object.entries(tunes).find(([_, tune]) => tune === code) || []; + if (example) { + // select example + setActivePattern(example); + return; + } if (!activePattern) { + // create new user pattern activePattern = newUserPattern(); setActivePattern(activePattern); } else if (!!tunes[activePattern] && code !== tunes[activePattern]) { - // is example / system pattern + // fork example activePattern = getNextCloneName(activePattern); setActivePattern(activePattern); }