45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
import { GetWebfsDatabase } from '../app'
|
|
import { Item } from '../fs/Item'
|
|
import type { SimpleStream } from '../utils/SimpleStream'
|
|
import { Program } from './Program'
|
|
|
|
export class ResetIndexedDb extends Program {
|
|
constructor() {
|
|
super()
|
|
}
|
|
|
|
async Exec(_: SimpleStream<string>, stdout: SimpleStream<string>, ___: Item, ____: string[]): Promise<number> {
|
|
const db = GetWebfsDatabase()
|
|
|
|
if (!db) {
|
|
stdout.emit("rsindb: error: GetWebfsDatabase returned null")
|
|
return 1
|
|
}
|
|
|
|
return new Promise<number>(resolve => {
|
|
const request = indexedDB.deleteDatabase(db.name)
|
|
|
|
request.onerror = () => {
|
|
stdout.emit("rsindb: error: IndexedDB deletion request has failed\n")
|
|
resolve(2)
|
|
}
|
|
|
|
request.onblocked = () => {
|
|
stdout.emit("rsindb: debug: database open, closing connection\n")
|
|
db.close()
|
|
}
|
|
|
|
request.onupgradeneeded = () =>
|
|
stdout.emit("rsindb: debug: request upgrade needed\n")
|
|
|
|
request.onsuccess = () => {
|
|
stdout.emit("success\n")
|
|
|
|
resolve(0)
|
|
|
|
location.reload()
|
|
}
|
|
})
|
|
}
|
|
}
|