diff --git a/server/channels/app/plugin.go b/server/channels/app/plugin.go index 51b229f231..952cb5b539 100644 --- a/server/channels/app/plugin.go +++ b/server/channels/app/plugin.go @@ -950,7 +950,7 @@ func (ch *Channels) processPrepackagedPlugins(prepackagedPluginsDir string) erro prepackagedPlugins := make([]*plugin.PrepackagedPlugin, 0, len(pluginSignaturePathMap)) transitionallyPrepackagedPlugins := make([]*plugin.PrepackagedPlugin, 0) for p := range plugins { - if ch.pluginIsTransitionallyPrepackaged(p.Manifest.Id) { + if ch.pluginIsTransitionallyPrepackaged(p.Manifest) { if ch.shouldPersistTransitionallyPrepackagedPlugin(availablePluginsMap, p) { transitionallyPrepackagedPlugins = append(transitionallyPrepackagedPlugins, p) } @@ -1046,13 +1046,18 @@ var transitionallyPrepackagedPlugins = []string{ "com.mattermost.plugin-todo", "com.mattermost.welcomebot", "com.mattermost.apps", + "playbooks", } // pluginIsTransitionallyPrepackaged identifies plugin ids that are currently prepackaged but // slated for future removal. -func (ch *Channels) pluginIsTransitionallyPrepackaged(pluginID string) bool { +func (ch *Channels) pluginIsTransitionallyPrepackaged(m *model.Manifest) bool { for _, id := range transitionallyPrepackagedPlugins { - if id == pluginID { + if id == m.Id { + if m.Id == model.PluginIdPlaybooks { + return ch.playbooksIsTransitionallyPrepackaged(m) + } + return true } } @@ -1060,6 +1065,22 @@ func (ch *Channels) pluginIsTransitionallyPrepackaged(pluginID string) bool { return false } +// playbooksIsTransitionallyPrepackaged determines if the playbooks plugin is transitionally prepackaged. +// conditions are: +// - the server is not enterprise licensed +// - the playbooks version is