mirror of
https://github.com/wailsapp/wails.git
synced 2025-05-02 19:31:20 +08:00
[v3] Improved plugin shutdown
This commit is contained in:
parent
767b7d6026
commit
7ecbc846b4
@ -76,7 +76,7 @@ func New(appOptions Options) *App {
|
|||||||
result.plugins = NewPluginManager(appOptions.Plugins, srv)
|
result.plugins = NewPluginManager(appOptions.Plugins, srv)
|
||||||
err = result.plugins.Init()
|
err = result.plugins.Init()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
println("Fatal error in application initialisation: ", err.Error())
|
result.Quit()
|
||||||
os.Exit(1)
|
os.Exit(1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,8 +11,9 @@ type Plugin interface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type PluginManager struct {
|
type PluginManager struct {
|
||||||
plugins map[string]Plugin
|
plugins map[string]Plugin
|
||||||
assetServer *assetserver.AssetServer
|
assetServer *assetserver.AssetServer
|
||||||
|
initialisedPlugins []Plugin
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewPluginManager(plugins map[string]Plugin, assetServer *assetserver.AssetServer) *PluginManager {
|
func NewPluginManager(plugins map[string]Plugin, assetServer *assetserver.AssetServer) *PluginManager {
|
||||||
@ -27,8 +28,11 @@ func (p *PluginManager) Init() error {
|
|||||||
for _, plugin := range p.plugins {
|
for _, plugin := range p.plugins {
|
||||||
err := plugin.Init(globalApplication)
|
err := plugin.Init(globalApplication)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
globalApplication.error("Plugin '%s' failed to initialise: %s", plugin.Name(), err.Error())
|
||||||
|
p.Shutdown()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
p.initialisedPlugins = append(p.initialisedPlugins, plugin)
|
||||||
injectJS := plugin.InjectJS()
|
injectJS := plugin.InjectJS()
|
||||||
if injectJS != "" {
|
if injectJS != "" {
|
||||||
p.assetServer.AddPluginScript(plugin.Name(), injectJS)
|
p.assetServer.AddPluginScript(plugin.Name(), injectJS)
|
||||||
@ -39,7 +43,7 @@ func (p *PluginManager) Init() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (p *PluginManager) Shutdown() {
|
func (p *PluginManager) Shutdown() {
|
||||||
for _, plugin := range p.plugins {
|
for _, plugin := range p.initialisedPlugins {
|
||||||
plugin.Shutdown()
|
plugin.Shutdown()
|
||||||
globalApplication.info("Plugin '%s' shutdown", plugin.Name())
|
globalApplication.info("Plugin '%s' shutdown", plugin.Name())
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package single_instance
|
package single_instance
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"github.com/wailsapp/wails/v3/pkg/application"
|
"github.com/wailsapp/wails/v3/pkg/application"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
@ -71,7 +72,7 @@ func (p *Plugin) Init(app *application.App) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
os.Exit(0)
|
return fmt.Errorf("another instance of this application is already running")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user