fix: update / fork logic
This commit is contained in:
parent
7225b0b18d
commit
a45d87667f
2 changed files with 12 additions and 4 deletions
|
|
@ -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);
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue