diff --git a/src/browserfs.ts b/src/browserfs.ts index 26316b58..ddfe005f 100644 --- a/src/browserfs.ts +++ b/src/browserfs.ts @@ -270,20 +270,12 @@ export const openWorldZip = async (...args: Parameters } } -export async function generateAndDownloadWorldZip() { - const zip = new JSZip() - - zip.folder('world') - - // Generate the ZIP archive content - const zipContent = await zip.generateAsync({ type: 'blob' }) - - // Create a download link and trigger the download - const downloadLink = document.createElement('a') - downloadLink.href = URL.createObjectURL(zipContent) - downloadLink.download = 'prismarine-world.zip' - downloadLink.click() - - // Clean up the URL object after download - URL.revokeObjectURL(downloadLink.href) +export const resetLocalStorageWorld = () => { + for (const key of Object.keys(localStorage)) { + if (/^[\da-fA-F]{8}(?:\b-[\da-fA-F]{4}){3}\b-[\da-fA-F]{12}$/g.test(key) || key === '/') { + localStorage.removeItem(key) + } + } } + +window.resetLocalStorageWorld = resetLocalStorageWorld diff --git a/src/builtinCommands.ts b/src/builtinCommands.ts index 4de46bd4..d8c91c37 100644 --- a/src/builtinCommands.ts +++ b/src/builtinCommands.ts @@ -3,6 +3,7 @@ import { join } from 'path' import JSZip from 'jszip' import { fsState } from './loadSave' import { closeWan, openToWanAndCopyJoinLink } from './localServerMultiplayer' +import { resetLocalStorageWorld } from './browserfs' const notImplemented = () => { return 'Not implemented yet' @@ -42,7 +43,8 @@ const exportWorld = async () => { // Create a download link and trigger the download const downloadLink = document.createElement('a') downloadLink.href = URL.createObjectURL(zipContent) - downloadLink.download = 'world-exported.zip' + // todo use loaded zip/folder name + downloadLink.download = 'world-prismarine-exported.zip' downloadLink.click() // Clean up the URL object after download @@ -81,11 +83,10 @@ const commands = [ async invoke() { if (fsState.inMemorySave) return // todo for testing purposes - sessionStorage.oldData = localStorage + sessionStorage.oldWorldData = localStorage console.log('World removed. Old data saved to sessionStorage.oldData') localServer.quit() - // todo browserfs bug - fs.rmdirSync(localServer.options.worldFolder, { recursive: true }) + resetLocalStorageWorld() } }, { diff --git a/src/menus/loading_or_error_screen.js b/src/menus/loading_or_error_screen.js index 55ee9279..c110ab7b 100644 --- a/src/menus/loading_or_error_screen.js +++ b/src/menus/loading_or_error_screen.js @@ -4,6 +4,7 @@ const { addPanoramaCubeMap } = require('../panorama') const { hideModal, activeModalStacks, activeModalStack, replaceActiveModalStack, miscUiState } = require('../globalState') const { guessProblem } = require('../guessProblem') const { fsState } = require('../loadSave') +const { resetLocalStorageWorld } = require('../browserfs') const { commonCss } = require('./components/common') class LoadingErrorScreen extends LitElement { @@ -98,11 +99,7 @@ class LoadingErrorScreen extends LitElement { addPanoramaCubeMap() }}> { if (!confirm('Are you sure you want to delete all local world content?')) return - for (const key of Object.keys(localStorage)) { - if (/^[\da-fA-F]{8}(?:\b-[\da-fA-F]{4}){3}\b-[\da-fA-F]{12}$/g.test(key) || key === '/') { - localStorage.removeItem(key) - } - } + resetLocalStorageWorld() window.location.reload() }}> window.location.reload()} pmui-label="Full Reload" pmui-width="200px">` : ''