mirror of
https://github.com/ragestudio/vessel.git
synced 2025-06-09 10:34:18 +00:00
Fix eventBus & other logic errors
This commit is contained in:
parent
7c8e61005f
commit
c45f85901b
@ -26,35 +26,46 @@ export default class ExtensionManager {
|
|||||||
throw new Error(`Extension ${id} not found`)
|
throw new Error(`Extension ${id} not found`)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:loading", manifest)
|
app.eventBus.emit("extension:loading", manifest)
|
||||||
this.logger.log(`Loading extension`, manifest)
|
this.logger.log(`Loading extension`, manifest)
|
||||||
|
|
||||||
if (!manifest.main) {
|
if (!manifest.main) {
|
||||||
throw new Error("Extension manifest is missing main file")
|
throw new Error("Extension manifest is missing main file")
|
||||||
}
|
}
|
||||||
|
|
||||||
// load main file
|
const startLoadAt = performance.now()
|
||||||
let mainClass = await import(
|
|
||||||
/* @vite-ignore */
|
|
||||||
manifest.main
|
|
||||||
)
|
|
||||||
|
|
||||||
// inject dependencies
|
let main = null
|
||||||
mainClass = mainClass.default
|
|
||||||
|
|
||||||
// initializate
|
if (manifest.enabled == true) {
|
||||||
let main = new mainClass(this.runtime, this, manifest)
|
// load main file
|
||||||
|
let mainClass = await import(
|
||||||
|
/* @vite-ignore */
|
||||||
|
manifest.main
|
||||||
|
)
|
||||||
|
|
||||||
await main._init()
|
// inject dependencies
|
||||||
|
mainClass = mainClass.default
|
||||||
|
|
||||||
|
// initializate
|
||||||
|
main = new mainClass(this.runtime, this, manifest)
|
||||||
|
|
||||||
|
await main._init()
|
||||||
|
}
|
||||||
|
|
||||||
|
const loadDuration = performance.now() - startLoadAt
|
||||||
|
|
||||||
// set extension in map
|
// set extension in map
|
||||||
this.extensions.set(manifest.id, {
|
this.extensions.set(manifest.id, {
|
||||||
|
id: manifest.id,
|
||||||
manifest: manifest,
|
manifest: manifest,
|
||||||
main: main,
|
main: main,
|
||||||
worker: null,
|
worker: null,
|
||||||
|
loadDuration: loadDuration,
|
||||||
|
enabled: manifest.enabled,
|
||||||
})
|
})
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:loaded", manifest)
|
app.eventBus.emit("extension:loaded", manifest)
|
||||||
this.logger.log(`Extension loaded`, manifest)
|
this.logger.log(`Extension loaded`, manifest)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -67,9 +78,9 @@ export default class ExtensionManager {
|
|||||||
|
|
||||||
await extension.main._unload()
|
await extension.main._unload()
|
||||||
|
|
||||||
this.extensions.delete(id)
|
//this.extensions.delete(id)
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:unloaded", extension.manifest)
|
app.eventBus.emit("extension:unloaded", extension.manifest)
|
||||||
this.logger.log(`Extension unloaded`, extension.manifest)
|
this.logger.log(`Extension unloaded`, extension.manifest)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,7 +92,7 @@ export default class ExtensionManager {
|
|||||||
manifest = await manifest.json()
|
manifest = await manifest.json()
|
||||||
}
|
}
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:installing", manifest)
|
app.eventBus.emit("extension:installing", manifest)
|
||||||
this.logger.log(`Installing extension`, manifest)
|
this.logger.log(`Installing extension`, manifest)
|
||||||
|
|
||||||
if (!manifest.main) {
|
if (!manifest.main) {
|
||||||
@ -91,11 +102,13 @@ export default class ExtensionManager {
|
|||||||
manifest.id = manifest.name.replace("/", "-").replace("@", "")
|
manifest.id = manifest.name.replace("/", "-").replace("@", "")
|
||||||
manifest.url = manifestUrl
|
manifest.url = manifestUrl
|
||||||
manifest.main = replaceRelativeImportWithUrl(manifest.main, manifestUrl)
|
manifest.main = replaceRelativeImportWithUrl(manifest.main, manifestUrl)
|
||||||
|
manifest.enabled = true
|
||||||
|
manifest.installed_at = Date.now()
|
||||||
|
|
||||||
await this.db.manifest.put(manifest)
|
await this.db.manifest.put(manifest)
|
||||||
await this.load(manifest.id)
|
await this.load(manifest.id)
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:installed", manifest)
|
app.eventBus.emit("extension:installed", manifest)
|
||||||
this.logger.log(`Extension installed`, manifest)
|
this.logger.log(`Extension installed`, manifest)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -106,13 +119,14 @@ export default class ExtensionManager {
|
|||||||
throw new Error(`Extension ${id} not found`)
|
throw new Error(`Extension ${id} not found`)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:uninstalling", extension.manifest)
|
app.eventBus.emit("extension:uninstalling", extension.manifest)
|
||||||
this.logger.log(`Uninstalling extension`, extension.manifest)
|
this.logger.log(`Uninstalling extension`, extension.manifest)
|
||||||
|
|
||||||
await this.unload(extension.manifest.id)
|
await this.unload(extension.manifest.id)
|
||||||
await this.db.manifest.delete(extension.manifest.id)
|
await this.db.manifest.delete(extension.manifest.id)
|
||||||
|
this.extensions.delete(id)
|
||||||
|
|
||||||
this.runtime.eventBus.emit("extension:uninstalled", extension.manifest)
|
app.eventBus.emit("extension:uninstalled", extension.manifest)
|
||||||
this.logger.log(`Extension uninstalled`, extension.manifest)
|
this.logger.log(`Extension uninstalled`, extension.manifest)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,6 +138,30 @@ export default class ExtensionManager {
|
|||||||
delete this.context[id]
|
delete this.context[id]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleExtension = async (id, to) => {
|
||||||
|
let extension = this.extensions.get(id)
|
||||||
|
|
||||||
|
if (!extension) {
|
||||||
|
throw new Error(`Extension ${id} not found`)
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof to !== "boolean") {
|
||||||
|
to = !extension.enabled
|
||||||
|
}
|
||||||
|
|
||||||
|
extension.manifest.enabled = to
|
||||||
|
extension.enabled = to
|
||||||
|
|
||||||
|
await this.db.manifest.put(extension.manifest)
|
||||||
|
this.extensions.set(id, extension)
|
||||||
|
|
||||||
|
if (extension.manifest.enabled) {
|
||||||
|
await this.load(extension.manifest.id)
|
||||||
|
} else {
|
||||||
|
await this.unload(extension.manifest.id)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async initialize() {
|
async initialize() {
|
||||||
await this.db.initialize()
|
await this.db.initialize()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user