diff --git a/package-lock.json b/package-lock.json index 46dcda2..69e0fe5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5681,6 +5681,11 @@ "yallist": "^4.0.0" } }, + "lz-string": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz", + "integrity": "sha1-wNjq82BZ9wV5bh40SBHPTEmNOiY=" + }, "magic-string": { "version": "0.22.5", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", diff --git a/package.json b/package.json index 0a81f96..1f928b9 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "dependencies": { "cheap-glkote": "^0.2.4", "emglken": "^0.3.3", + "lz-string": "^1.4.4", "preact": "^10.5.12", "wouter-preact": "^2.7.3" }, diff --git a/src/components/player/Player.jsx b/src/components/player/Player.jsx index 7c527f1..c8caa16 100644 --- a/src/components/player/Player.jsx +++ b/src/components/player/Player.jsx @@ -1,5 +1,9 @@ import { h } from 'preact' import { useState, useEffect } from 'preact/hooks' +import { + compressToUTF16 as encode, + decompressFromUTF16 as decode +} from 'lz-string' import CheapGlkOte from 'cheap-glkote' @@ -48,12 +52,17 @@ const Handlers = ({ }, onFileRead: ({ filename }) => { if (filename === 'save') return null - const token = prompt('Enter your SAVE_TOKEN here') - return token + + const lsName = prompt('Enter RecordID:') + + const record = localStorage.getItem(`save-${lsName}`) + return decode(record) }, onFileWrite: ({ filename }, content) => { - const token = content - prompt('Copy your SAVE_TOKEN', token) + const lsName = prompt('Choose RecordID:') + const record = encode(content) + + localStorage.setItem(`save-${lsName}`, record) }, /* */ onExit: _ => setInputType(null) @@ -94,15 +103,16 @@ export default function ({ vmParts: { file, engine } }) { return status.stage !== 'ready' ? (