fix: update / fork logic

This commit is contained in:
Felix Roos 2023-12-07 20:17:01 +01:00
parent 7225b0b18d
commit a45d87667f
2 changed files with 12 additions and 4 deletions

View file

@ -17,7 +17,7 @@ import { prebake } from './prebake.mjs';
import * as tunes from './tunes.mjs'; import * as tunes from './tunes.mjs';
import PlayCircleIcon from '@heroicons/react/20/solid/PlayCircleIcon'; import PlayCircleIcon from '@heroicons/react/20/solid/PlayCircleIcon';
import { themes } from './themes.mjs'; 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 Loader from './Loader';
import { settingPatterns } from '../settings.mjs'; import { settingPatterns } from '../settings.mjs';
import { code2hash, hash2code } from './helpers.mjs'; import { code2hash, hash2code } from './helpers.mjs';
@ -148,7 +148,7 @@ export function Repl({ embedded = false }) {
cleanupDraw(); cleanupDraw();
}, },
afterEval: ({ code, meta }) => { afterEval: ({ code, meta }) => {
updateUserPattern(code); updateUserCode(code);
setMiniLocations(meta.miniLocations); setMiniLocations(meta.miniLocations);
setWidgets(meta.widgets); setWidgets(meta.widgets);
setPending(false); setPending(false);

View file

@ -126,14 +126,22 @@ export function renameActivePattern() {
setActivePattern(newName); setActivePattern(newName);
} }
export function updateUserPattern(code) { export function updateUserCode(code) {
const userPatterns = getUserPatterns(); const userPatterns = getUserPatterns();
let activePattern = getSetting('activePattern'); 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) { if (!activePattern) {
// create new user pattern
activePattern = newUserPattern(); activePattern = newUserPattern();
setActivePattern(activePattern); setActivePattern(activePattern);
} else if (!!tunes[activePattern] && code !== tunes[activePattern]) { } else if (!!tunes[activePattern] && code !== tunes[activePattern]) {
// is example / system pattern // fork example
activePattern = getNextCloneName(activePattern); activePattern = getNextCloneName(activePattern);
setActivePattern(activePattern); setActivePattern(activePattern);
} }