Skip to content

Commit 12de7fd

Browse files
committed
Fix regressions from refactoring
1 parent a287b28 commit 12de7fd

File tree

6 files changed

+67
-13
lines changed

6 files changed

+67
-13
lines changed

@webwriter/core/model/stores/packagestore.ts

Lines changed: 51 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { CustomElementsManifest, ManifestCustomElementDeclaration, ManifestDecla
66
import {version as appVersion} from "../../package.json"
77
import { licenses, presets } from "../templates"
88
import { ImportMap } from "@jspm/import-map"
9+
import { toJS } from "mobx"
910

1011
type Options = {
1112
corePackages?: Package["name"][]
@@ -75,6 +76,8 @@ export class PackageStore {
7576

7677
importMap: ImportMap
7778

79+
resetOnInitialize = false
80+
7881
static allowedOrgs = [
7982
"@webwriter"
8083
]
@@ -364,20 +367,60 @@ export class PackageStore {
364367
return Object.fromEntries(Object.keys(this.packages).map(name => [unscopePackageName(name), this.packages[name]]))
365368
}
366369

367-
async initialize(force=false) {
370+
async initialize() {
371+
if(this.resetOnInitialize) {
372+
try {
373+
await this.reset()
374+
}
375+
catch(err) {
376+
console.error(err)
377+
}
378+
}
368379
return this.load()
369380
}
370381

382+
async reset() {
383+
const resetOnInitialize = this.resetOnInitialize
384+
385+
localStorage.clear()
386+
sessionStorage.clear()
387+
388+
const cacheKeys = await caches.keys()
389+
await Promise.all(cacheKeys.map(key => caches.delete(key)))
390+
391+
const db = indexedDB.open("webwriter", 1)
392+
await new Promise(r => db.addEventListener("success", r))
393+
if(db.result.objectStoreNames.contains("handles")) {
394+
const tx = db.result.transaction("handles", "readwrite")
395+
const store = tx.objectStore("handles")
396+
store.clear()
397+
}
398+
db.result.close()
399+
400+
/*await new Promise((resolve, reject) => {
401+
const req = indexedDB?.deleteDatabase("webwriter")
402+
req.addEventListener("success", resolve)
403+
req.addEventListener("error", reject)
404+
req.addEventListener("blocked", reject)
405+
})*/
406+
407+
if(resetOnInitialize) {
408+
localStorage.setItem("webwriter_settings", JSON.stringify({ui: {resetOnInitialize: true}}))
409+
}
410+
}
411+
371412
async add(urlOrHandle: string | FileSystemDirectoryHandle, name?: string) {
372413
const id = typeof urlOrHandle === "string"? urlOrHandle: name!
373414
const pkg = Package.fromID(id)
374415
const matchingPkg = this.installed.find(match => pkg.name === match.name)
375-
const cancelled = matchingPkg && !confirm(`Installing ${id} requires uninstalling ${matchingPkg.id}. Do you want to continue?`)
376-
if(matchingPkg && cancelled) {
377-
return
378-
}
379-
else if(matchingPkg && !cancelled) {
380-
await new Promise(async r => this.pmQueue.push({command: "remove", parameters: [matchingPkg.id], cwd: await this.appDir, name: matchingPkg.id}, r))
416+
if(matchingPkg) {
417+
const cancelled = !confirm(`Installing ${id} requires uninstalling ${matchingPkg.id}. Do you want to continue?`)
418+
if(cancelled) {
419+
return
420+
}
421+
else {
422+
await new Promise(async r => this.pmQueue.push({command: "remove", parameters: [matchingPkg.id], cwd: await this.appDir, name: matchingPkg.id}, r))
423+
}
381424
}
382425

383426
if(typeof urlOrHandle === "string") {
@@ -622,7 +665,7 @@ export class PackageStore {
622665
}
623666

624667
async getLocalHandle(id: string): Promise<FileSystemDirectoryHandle> {
625-
const db = indexedDB.open("webwriter")
668+
const db = indexedDB.open("webwriter", 1)
626669
await new Promise(r => db.addEventListener("success", r))
627670
const tx = db.result.transaction("handles", "readwrite")
628671
const store = tx.objectStore("handles")

@webwriter/core/model/stores/rootstore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ export class RootStore {
2929
constructor({corePackages, apiBase, settings, initializePackages}: AllOptions) {
3030
const onBundleChange = this.onBundleChange
3131
this.ui = new UIStore({...settings?.ui})
32-
this.packages = new PackageStore({...settings?.packages, corePackages, initializePackages, apiBase})
33-
this.accounts = new AccountStore(settings?.accounts.accounts)
32+
this.packages = new PackageStore({...settings?.packages, corePackages, initializePackages, apiBase, resetOnInitialize: this.ui.resetOnInitialize, onBundleChange})
33+
this.accounts = new AccountStore(settings?.accounts?.accounts)
3434
this.document = new DocumentStore({...settings?.document, lang: this.ui.locale, defaultAccount: this.accounts.getAccount("file")}, this.accounts)
3535
}
3636

@webwriter/core/model/stores/uistore.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ export class UIStore {
3232
showUnstable = false
3333
showUnknown = false
3434
showSourceEditor = false
35+
resetOnInitialize = false
3536

3637
keymap: Record<string, {shortcut: string}> = {}
3738

@webwriter/core/view/app/palette/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -960,11 +960,11 @@ export class Palette extends LitElement {
960960
}
961961

962962
AddLocalPackageButton() {
963-
const importingName = msg("Local Package")
963+
const importingName = undefined
964964
const disabled = !this.app.store.accounts.getClient("file", "file")?.showOpenFilePickerSupported
965965
return html`<sl-card id="add-local" class=${classMap({"package-card": true})} @click=${() => !disabled && (this.packageFormMode = "create")} ?inert=${!!importingName} ?data-disabled=${disabled} title=${disabled? "This is a feature for developers. It only works in Chromium-based browsers with the File System Access API enabled (Chrome, Edge, etc.).": ""}>
966966
<sl-icon name="plus"></sl-icon>
967-
<div>${importingName? prettifyPackageName(importingName): msg(" Create/import")}</div>
967+
<div>${importingName ?? msg(" Create/import")}</div>
968968
<sl-progress-bar ?indeterminate=${!!importingName}></sl-progress-bar>
969969
</span>
970970
</sl-card>`

@webwriter/core/viewmodel/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ export const ViewModelMixin = (cls: LitElementConstructor, isSettings=false) =>
8787
button.remove()
8888
}
8989
}
90-
await this.store.packages.load()
90+
await this.store.packages.initialize()
9191
this.requestUpdate()
9292
this.initializing = false
9393
document.body.classList.add("loaded")

@webwriter/core/viewmodel/settingscontroller/index.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,16 @@ export class SettingsController implements ReactiveController {
163163
),
164164
label: msg("Show source editing commands"),
165165
},
166+
resetOnInitialize: {
167+
schema: z
168+
.boolean()
169+
.describe(
170+
msg(
171+
"Advanced: Reset all WebWriter data each time the page is loaded - for debugging purposes."
172+
)
173+
),
174+
label: msg("Reset all app data on page load"),
175+
},
166176
/*showTextPlaceholder: {
167177
schema: z
168178
.boolean()

0 commit comments

Comments
 (0)