persist bot code in localstorage

This commit is contained in:
Ilion Beyst 2022-02-22 18:48:59 +01:00
parent 060b585da1
commit 006ce35622
3 changed files with 35 additions and 3 deletions

View file

@ -0,0 +1,15 @@
import defaultBotCode from "../assets/bot_template.txt?raw";
const BOT_CODE_KEY = "bot_code";
export function getBotCode() {
let botCode = localStorage.getItem(BOT_CODE_KEY);
if (!botCode) {
botCode = defaultBotCode;
}
return botCode;
}
export function saveBotCode(botCode: string) {
localStorage.setItem(BOT_CODE_KEY, botCode);
}

View file

@ -0,0 +1,9 @@
export function debounce(func: Function, timeout: number = 300) {
let timer: ReturnType<typeof setTimeout>;
return (...args: any[]) => {
clearTimeout(timer);
timer = setTimeout(() => {
func.apply(this, args);
}, timeout);
};
}

View file

@ -9,8 +9,8 @@
import type { Ace } from "ace-builds"; import type { Ace } from "ace-builds";
import ace from "ace-builds/src-noconflict/ace?client"; import ace from "ace-builds/src-noconflict/ace?client";
import * as AcePythonMode from "ace-builds/src-noconflict/mode-python?client"; import * as AcePythonMode from "ace-builds/src-noconflict/mode-python?client";
import { getBotCode, saveBotCode } from "$lib/bot_code";
import defaultBotCode from "../assets/bot_template.txt?raw"; import { debounce } from "$lib/utils";
let matches = []; let matches = [];
@ -24,8 +24,16 @@
}); });
function init_editor() { function init_editor() {
editSession = new ace.EditSession(defaultBotCode); editSession = new ace.EditSession(getBotCode());
editSession.setMode(new AcePythonMode.Mode()); editSession.setMode(new AcePythonMode.Mode());
const saveCode = () => {
const code = editSession.getDocument().getValue();
saveBotCode(code);
};
// cast to any because the type annotations are wrong here
(editSession as any).on("change", debounce(saveCode, 2000));
} }
async function submitCode() { async function submitCode() {