[MM-40935] Add OnInstall() plugin hook (#19499)
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
2d986ef920
Коммит
6dab9eadf8
@@ -438,7 +438,7 @@ type AppIface interface {
|
||||
CompareAndDeletePluginKey(pluginID string, key string, oldValue []byte) (bool, *model.AppError)
|
||||
CompareAndSetPluginKey(pluginID string, key string, oldValue, newValue []byte) (bool, *model.AppError)
|
||||
CompleteOAuth(c *request.Context, service string, body io.ReadCloser, teamID string, props map[string]string, tokenUser *model.User) (*model.User, *model.AppError)
|
||||
CompleteOnboarding(request *model.CompleteOnboardingRequest) *model.AppError
|
||||
CompleteOnboarding(c *request.Context, request *model.CompleteOnboardingRequest) *model.AppError
|
||||
CompleteSwitchWithOAuth(service string, userData io.Reader, email string, tokenUser *model.User) (*model.User, *model.AppError)
|
||||
Compliance() einterfaces.ComplianceInterface
|
||||
Config() *model.Config
|
||||
|
||||
@@ -7,18 +7,21 @@ import (
|
||||
"net/http"
|
||||
"sync"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v6/app/request"
|
||||
"github.com/mattermost/mattermost-server/v6/model"
|
||||
"github.com/mattermost/mattermost-server/v6/shared/mlog"
|
||||
)
|
||||
|
||||
func (a *App) CompleteOnboarding(request *model.CompleteOnboardingRequest) *model.AppError {
|
||||
var wg sync.WaitGroup
|
||||
|
||||
if !*a.Config().PluginSettings.Enable {
|
||||
return model.NewAppError("completeOnboarding", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
|
||||
func (a *App) CompleteOnboarding(c *request.Context, request *model.CompleteOnboardingRequest) *model.AppError {
|
||||
pluginsEnvironment := a.Channels().GetPluginsEnvironment()
|
||||
if pluginsEnvironment == nil {
|
||||
return model.NewAppError("CompleteOnboarding", "app.plugin.disabled.app_error", nil, "", http.StatusNotImplemented)
|
||||
}
|
||||
|
||||
for _, id := range request.InstallPlugins {
|
||||
pluginContext := pluginContext(c)
|
||||
|
||||
var wg sync.WaitGroup
|
||||
for _, pluginID := range request.InstallPlugins {
|
||||
wg.Add(1)
|
||||
|
||||
go func(id string) {
|
||||
@@ -37,7 +40,20 @@ func (a *App) CompleteOnboarding(request *model.CompleteOnboardingRequest) *mode
|
||||
mlog.Error("Failed to enable plugin for onboarding", mlog.String("id", id), mlog.Err(appErr))
|
||||
return
|
||||
}
|
||||
}(id)
|
||||
|
||||
hooks, err := pluginsEnvironment.HooksForPlugin(id)
|
||||
if err != nil {
|
||||
mlog.Warn("Getting hooks for plugin failed", mlog.String("plugin_id", id), mlog.Err(err))
|
||||
return
|
||||
}
|
||||
|
||||
event := model.OnInstallEvent{
|
||||
UserId: c.Session().UserId,
|
||||
}
|
||||
if err = hooks.OnInstall(pluginContext, event); err != nil {
|
||||
mlog.Error("Plugin OnInstall hook failed", mlog.String("plugin_id", id), mlog.Err(err))
|
||||
}
|
||||
}(pluginID)
|
||||
}
|
||||
|
||||
wg.Wait()
|
||||
|
||||
@@ -1671,7 +1671,7 @@ func (a *OpenTracingAppLayer) CompleteOAuth(c *request.Context, service string,
|
||||
return resultVar0, resultVar1
|
||||
}
|
||||
|
||||
func (a *OpenTracingAppLayer) CompleteOnboarding(request *model.CompleteOnboardingRequest) *model.AppError {
|
||||
func (a *OpenTracingAppLayer) CompleteOnboarding(c *request.Context, request *model.CompleteOnboardingRequest) *model.AppError {
|
||||
origCtx := a.ctx
|
||||
span, newCtx := tracing.StartSpanWithParentByContext(a.ctx, "app.CompleteOnboarding")
|
||||
|
||||
@@ -1683,7 +1683,7 @@ func (a *OpenTracingAppLayer) CompleteOnboarding(request *model.CompleteOnboardi
|
||||
}()
|
||||
|
||||
defer span.Finish()
|
||||
resultVar0 := a.app.CompleteOnboarding(request)
|
||||
resultVar0 := a.app.CompleteOnboarding(c, request)
|
||||
|
||||
if resultVar0 != nil {
|
||||
span.LogFields(spanlog.Error(resultVar0))
|
||||
|
||||
Ссылка в новой задаче
Block a user