From ace4175e261763ca4d0f4cf064974addfdd6fc73 Mon Sep 17 00:00:00 2001 From: Marcus Andersson Date: Wed, 8 Feb 2023 14:41:49 +0100 Subject: [PATCH] Plugin: Skip preloading disabled app plugins (#63083) will not preload app plugins that is disabled. --- pkg/api/frontendsettings.go | 3 +- pkg/api/frontendsettings_test.go | 70 ++++++++++++++++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/pkg/api/frontendsettings.go b/pkg/api/frontendsettings.go index f4650b60ab9..dd4314d3ad4 100644 --- a/pkg/api/frontendsettings.go +++ b/pkg/api/frontendsettings.go @@ -402,11 +402,12 @@ func newAppDTO(plugin plugins.PluginDTO, settings pluginsettings.InfoDTO) *plugi ID: plugin.ID, Version: plugin.Info.Version, Path: plugin.Module, - Preload: plugin.Preload, + Preload: false, } if settings.Enabled { app.Extensions = plugin.Extensions + app.Preload = plugin.Preload } return app diff --git a/pkg/api/frontendsettings_test.go b/pkg/api/frontendsettings_test.go index df3a2f79aa2..f1aca2ae700 100644 --- a/pkg/api/frontendsettings_test.go +++ b/pkg/api/frontendsettings_test.go @@ -310,6 +310,76 @@ func TestHTTPServer_GetFrontendSettings_apps(t *testing.T) { }, }, }, + { + desc: "disabled app with preload", + pluginStore: func() plugins.Store { + return &plugins.FakePluginStore{ + PluginList: []plugins.PluginDTO{ + { + Module: fmt.Sprintf("/%s/module.js", "test-app"), + JSONData: plugins.JSONData{ + ID: "test-app", + Info: plugins.Info{Version: "0.5.0"}, + Type: plugins.App, + Extensions: []*plugindef.ExtensionsLink{}, + Preload: true, + }, + }, + }, + } + }, + pluginSettings: func() pluginSettings.Service { + return &pluginSettings.FakePluginSettings{ + Plugins: newAppSettings("test-app", false), + } + }, + expected: settings{ + Apps: map[string]*plugins.AppDTO{ + "test-app": { + ID: "test-app", + Preload: false, + Path: "/test-app/module.js", + Version: "0.5.0", + Extensions: nil, + }, + }, + }, + }, + { + desc: "enalbed app with preload", + pluginStore: func() plugins.Store { + return &plugins.FakePluginStore{ + PluginList: []plugins.PluginDTO{ + { + Module: fmt.Sprintf("/%s/module.js", "test-app"), + JSONData: plugins.JSONData{ + ID: "test-app", + Info: plugins.Info{Version: "0.5.0"}, + Type: plugins.App, + Extensions: []*plugindef.ExtensionsLink{}, + Preload: true, + }, + }, + }, + } + }, + pluginSettings: func() pluginSettings.Service { + return &pluginSettings.FakePluginSettings{ + Plugins: newAppSettings("test-app", true), + } + }, + expected: settings{ + Apps: map[string]*plugins.AppDTO{ + "test-app": { + ID: "test-app", + Preload: true, + Path: "/test-app/module.js", + Version: "0.5.0", + Extensions: nil, + }, + }, + }, + }, } for _, test := range tests {