Add EnableDefaultChannelLeaveJoinMessages config setting (#7961)

This commit is contained in:
Chris Duarte
2018-01-10 14:04:04 -08:00
committed by Christopher Speller
parent dd9ad10d70
commit 0a9200c35d
5 changed files with 125 additions and 111 deletions

View File

@@ -63,13 +63,15 @@ func (a *App) JoinDefaultChannels(teamId string, user *model.User, channelRole s
l4g.Warn("Failed to update ChannelMemberHistory table %v", result.Err) l4g.Warn("Failed to update ChannelMemberHistory table %v", result.Err)
} }
if requestor == nil { if *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages == true {
if err := a.postJoinTeamMessage(user, townSquare); err != nil { if requestor == nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) if err := a.postJoinTeamMessage(user, townSquare); err != nil {
} l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
} else { }
if err := a.PostAddToTeamMessage(requestor, user, townSquare, ""); err != nil { } else {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err) if err := a.PostAddToTeamMessage(requestor, user, townSquare, ""); err != nil {
l4g.Error(utils.T("api.channel.post_user_add_remove_message_and_forget.error"), err)
}
} }
} }
@@ -1012,6 +1014,10 @@ func (a *App) LeaveChannel(channelId string, userId string) *model.AppError {
return err return err
} }
if channel.Name == model.DEFAULT_CHANNEL && *a.Config().ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages == false {
return nil
}
a.Go(func() { a.Go(func() {
a.postLeaveChannelMessage(user, channel) a.postLeaveChannelMessage(user, channel)
}) })

View File

@@ -190,53 +190,54 @@ func (a *App) trackActivity() {
func (a *App) trackConfig() { func (a *App) trackConfig() {
cfg := a.Config() cfg := a.Config()
a.SendDiagnostic(TRACK_CONFIG_SERVICE, map[string]interface{}{ a.SendDiagnostic(TRACK_CONFIG_SERVICE, map[string]interface{}{
"web_server_mode": *cfg.ServiceSettings.WebserverMode, "web_server_mode": *cfg.ServiceSettings.WebserverMode,
"enable_security_fix_alert": *cfg.ServiceSettings.EnableSecurityFixAlert, "enable_security_fix_alert": *cfg.ServiceSettings.EnableSecurityFixAlert,
"enable_insecure_outgoing_connections": *cfg.ServiceSettings.EnableInsecureOutgoingConnections, "enable_insecure_outgoing_connections": *cfg.ServiceSettings.EnableInsecureOutgoingConnections,
"enable_incoming_webhooks": cfg.ServiceSettings.EnableIncomingWebhooks, "enable_incoming_webhooks": cfg.ServiceSettings.EnableIncomingWebhooks,
"enable_outgoing_webhooks": cfg.ServiceSettings.EnableOutgoingWebhooks, "enable_outgoing_webhooks": cfg.ServiceSettings.EnableOutgoingWebhooks,
"enable_commands": *cfg.ServiceSettings.EnableCommands, "enable_commands": *cfg.ServiceSettings.EnableCommands,
"enable_only_admin_integrations": *cfg.ServiceSettings.EnableOnlyAdminIntegrations, "enable_only_admin_integrations": *cfg.ServiceSettings.EnableOnlyAdminIntegrations,
"enable_post_username_override": cfg.ServiceSettings.EnablePostUsernameOverride, "enable_post_username_override": cfg.ServiceSettings.EnablePostUsernameOverride,
"enable_post_icon_override": cfg.ServiceSettings.EnablePostIconOverride, "enable_post_icon_override": cfg.ServiceSettings.EnablePostIconOverride,
"enable_apiv3": *cfg.ServiceSettings.EnableAPIv3, "enable_apiv3": *cfg.ServiceSettings.EnableAPIv3,
"enable_user_access_tokens": *cfg.ServiceSettings.EnableUserAccessTokens, "enable_user_access_tokens": *cfg.ServiceSettings.EnableUserAccessTokens,
"enable_custom_emoji": *cfg.ServiceSettings.EnableCustomEmoji, "enable_custom_emoji": *cfg.ServiceSettings.EnableCustomEmoji,
"enable_emoji_picker": *cfg.ServiceSettings.EnableEmojiPicker, "enable_emoji_picker": *cfg.ServiceSettings.EnableEmojiPicker,
"experimental_enable_authentication_transfer": *cfg.ServiceSettings.ExperimentalEnableAuthenticationTransfer, "experimental_enable_authentication_transfer": *cfg.ServiceSettings.ExperimentalEnableAuthenticationTransfer,
"restrict_custom_emoji_creation": *cfg.ServiceSettings.RestrictCustomEmojiCreation, "restrict_custom_emoji_creation": *cfg.ServiceSettings.RestrictCustomEmojiCreation,
"enable_testing": cfg.ServiceSettings.EnableTesting, "enable_testing": cfg.ServiceSettings.EnableTesting,
"enable_developer": *cfg.ServiceSettings.EnableDeveloper, "enable_developer": *cfg.ServiceSettings.EnableDeveloper,
"enable_multifactor_authentication": *cfg.ServiceSettings.EnableMultifactorAuthentication, "enable_multifactor_authentication": *cfg.ServiceSettings.EnableMultifactorAuthentication,
"enforce_multifactor_authentication": *cfg.ServiceSettings.EnforceMultifactorAuthentication, "enforce_multifactor_authentication": *cfg.ServiceSettings.EnforceMultifactorAuthentication,
"enable_oauth_service_provider": cfg.ServiceSettings.EnableOAuthServiceProvider, "enable_oauth_service_provider": cfg.ServiceSettings.EnableOAuthServiceProvider,
"connection_security": *cfg.ServiceSettings.ConnectionSecurity, "connection_security": *cfg.ServiceSettings.ConnectionSecurity,
"uses_letsencrypt": *cfg.ServiceSettings.UseLetsEncrypt, "uses_letsencrypt": *cfg.ServiceSettings.UseLetsEncrypt,
"forward_80_to_443": *cfg.ServiceSettings.Forward80To443, "forward_80_to_443": *cfg.ServiceSettings.Forward80To443,
"maximum_login_attempts": *cfg.ServiceSettings.MaximumLoginAttempts, "maximum_login_attempts": *cfg.ServiceSettings.MaximumLoginAttempts,
"session_length_web_in_days": *cfg.ServiceSettings.SessionLengthWebInDays, "session_length_web_in_days": *cfg.ServiceSettings.SessionLengthWebInDays,
"session_length_mobile_in_days": *cfg.ServiceSettings.SessionLengthMobileInDays, "session_length_mobile_in_days": *cfg.ServiceSettings.SessionLengthMobileInDays,
"session_length_sso_in_days": *cfg.ServiceSettings.SessionLengthSSOInDays, "session_length_sso_in_days": *cfg.ServiceSettings.SessionLengthSSOInDays,
"session_cache_in_minutes": *cfg.ServiceSettings.SessionCacheInMinutes, "session_cache_in_minutes": *cfg.ServiceSettings.SessionCacheInMinutes,
"session_idle_timeout_in_minutes": *cfg.ServiceSettings.SessionIdleTimeoutInMinutes, "session_idle_timeout_in_minutes": *cfg.ServiceSettings.SessionIdleTimeoutInMinutes,
"isdefault_site_url": isDefault(*cfg.ServiceSettings.SiteURL, model.SERVICE_SETTINGS_DEFAULT_SITE_URL), "isdefault_site_url": isDefault(*cfg.ServiceSettings.SiteURL, model.SERVICE_SETTINGS_DEFAULT_SITE_URL),
"isdefault_tls_cert_file": isDefault(*cfg.ServiceSettings.TLSCertFile, model.SERVICE_SETTINGS_DEFAULT_TLS_CERT_FILE), "isdefault_tls_cert_file": isDefault(*cfg.ServiceSettings.TLSCertFile, model.SERVICE_SETTINGS_DEFAULT_TLS_CERT_FILE),
"isdefault_tls_key_file": isDefault(*cfg.ServiceSettings.TLSKeyFile, model.SERVICE_SETTINGS_DEFAULT_TLS_KEY_FILE), "isdefault_tls_key_file": isDefault(*cfg.ServiceSettings.TLSKeyFile, model.SERVICE_SETTINGS_DEFAULT_TLS_KEY_FILE),
"isdefault_read_timeout": isDefault(*cfg.ServiceSettings.ReadTimeout, model.SERVICE_SETTINGS_DEFAULT_READ_TIMEOUT), "isdefault_read_timeout": isDefault(*cfg.ServiceSettings.ReadTimeout, model.SERVICE_SETTINGS_DEFAULT_READ_TIMEOUT),
"isdefault_write_timeout": isDefault(*cfg.ServiceSettings.WriteTimeout, model.SERVICE_SETTINGS_DEFAULT_WRITE_TIMEOUT), "isdefault_write_timeout": isDefault(*cfg.ServiceSettings.WriteTimeout, model.SERVICE_SETTINGS_DEFAULT_WRITE_TIMEOUT),
"isdefault_google_developer_key": isDefault(cfg.ServiceSettings.GoogleDeveloperKey, ""), "isdefault_google_developer_key": isDefault(cfg.ServiceSettings.GoogleDeveloperKey, ""),
"isdefault_allow_cors_from": isDefault(*cfg.ServiceSettings.AllowCorsFrom, model.SERVICE_SETTINGS_DEFAULT_ALLOW_CORS_FROM), "isdefault_allow_cors_from": isDefault(*cfg.ServiceSettings.AllowCorsFrom, model.SERVICE_SETTINGS_DEFAULT_ALLOW_CORS_FROM),
"isdefault_allowed_untrusted_internal_connections": isDefault(*cfg.ServiceSettings.AllowedUntrustedInternalConnections, ""), "isdefault_allowed_untrusted_internal_connections": isDefault(*cfg.ServiceSettings.AllowedUntrustedInternalConnections, ""),
"restrict_post_delete": *cfg.ServiceSettings.RestrictPostDelete, "restrict_post_delete": *cfg.ServiceSettings.RestrictPostDelete,
"allow_edit_post": *cfg.ServiceSettings.AllowEditPost, "allow_edit_post": *cfg.ServiceSettings.AllowEditPost,
"post_edit_time_limit": *cfg.ServiceSettings.PostEditTimeLimit, "post_edit_time_limit": *cfg.ServiceSettings.PostEditTimeLimit,
"enable_user_typing_messages": *cfg.ServiceSettings.EnableUserTypingMessages, "enable_user_typing_messages": *cfg.ServiceSettings.EnableUserTypingMessages,
"enable_channel_viewed_messages": *cfg.ServiceSettings.EnableChannelViewedMessages, "enable_channel_viewed_messages": *cfg.ServiceSettings.EnableChannelViewedMessages,
"time_between_user_typing_updates_milliseconds": *cfg.ServiceSettings.TimeBetweenUserTypingUpdatesMilliseconds, "time_between_user_typing_updates_milliseconds": *cfg.ServiceSettings.TimeBetweenUserTypingUpdatesMilliseconds,
"cluster_log_timeout_milliseconds": *cfg.ServiceSettings.ClusterLogTimeoutMilliseconds, "cluster_log_timeout_milliseconds": *cfg.ServiceSettings.ClusterLogTimeoutMilliseconds,
"enable_post_search": *cfg.ServiceSettings.EnablePostSearch, "enable_post_search": *cfg.ServiceSettings.EnablePostSearch,
"enable_user_statuses": *cfg.ServiceSettings.EnableUserStatuses, "enable_user_statuses": *cfg.ServiceSettings.EnableUserStatuses,
"close_unused_direct_messages": *cfg.ServiceSettings.CloseUnusedDirectMessages, "close_unused_direct_messages": *cfg.ServiceSettings.CloseUnusedDirectMessages,
"experimental_enable_default_channel_leave_join_messages": *cfg.ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages,
}) })
a.SendDiagnostic(TRACK_CONFIG_TEAM, map[string]interface{}{ a.SendDiagnostic(TRACK_CONFIG_TEAM, map[string]interface{}{

View File

@@ -55,7 +55,8 @@
"ClusterLogTimeoutMilliseconds": 2000, "ClusterLogTimeoutMilliseconds": 2000,
"EnablePreviewFeatures": true, "EnablePreviewFeatures": true,
"CloseUnusedDirectMessages": false, "CloseUnusedDirectMessages": false,
"EnableTutorial": true "EnableTutorial": true,
"ExperimentalEnableDefaultChannelLeaveJoinMessages": true
}, },
"TeamSettings": { "TeamSettings": {
"SiteName": "Mattermost", "SiteName": "Mattermost",

View File

@@ -157,62 +157,63 @@ const (
) )
type ServiceSettings struct { type ServiceSettings struct {
SiteURL *string SiteURL *string
LicenseFileLocation *string LicenseFileLocation *string
ListenAddress *string ListenAddress *string
ConnectionSecurity *string ConnectionSecurity *string
TLSCertFile *string TLSCertFile *string
TLSKeyFile *string TLSKeyFile *string
UseLetsEncrypt *bool UseLetsEncrypt *bool
LetsEncryptCertificateCacheFile *string LetsEncryptCertificateCacheFile *string
Forward80To443 *bool Forward80To443 *bool
ReadTimeout *int ReadTimeout *int
WriteTimeout *int WriteTimeout *int
MaximumLoginAttempts *int MaximumLoginAttempts *int
GoroutineHealthThreshold *int GoroutineHealthThreshold *int
GoogleDeveloperKey string GoogleDeveloperKey string
EnableOAuthServiceProvider bool EnableOAuthServiceProvider bool
EnableIncomingWebhooks bool EnableIncomingWebhooks bool
EnableOutgoingWebhooks bool EnableOutgoingWebhooks bool
EnableCommands *bool EnableCommands *bool
EnableOnlyAdminIntegrations *bool EnableOnlyAdminIntegrations *bool
EnablePostUsernameOverride bool EnablePostUsernameOverride bool
EnablePostIconOverride bool EnablePostIconOverride bool
EnableAPIv3 *bool EnableAPIv3 *bool
EnableLinkPreviews *bool EnableLinkPreviews *bool
EnableTesting bool EnableTesting bool
EnableDeveloper *bool EnableDeveloper *bool
EnableSecurityFixAlert *bool EnableSecurityFixAlert *bool
EnableInsecureOutgoingConnections *bool EnableInsecureOutgoingConnections *bool
AllowedUntrustedInternalConnections *string AllowedUntrustedInternalConnections *string
EnableMultifactorAuthentication *bool EnableMultifactorAuthentication *bool
EnforceMultifactorAuthentication *bool EnforceMultifactorAuthentication *bool
EnableUserAccessTokens *bool EnableUserAccessTokens *bool
AllowCorsFrom *string AllowCorsFrom *string
SessionLengthWebInDays *int SessionLengthWebInDays *int
SessionLengthMobileInDays *int SessionLengthMobileInDays *int
SessionLengthSSOInDays *int SessionLengthSSOInDays *int
SessionCacheInMinutes *int SessionCacheInMinutes *int
SessionIdleTimeoutInMinutes *int SessionIdleTimeoutInMinutes *int
WebsocketSecurePort *int WebsocketSecurePort *int
WebsocketPort *int WebsocketPort *int
WebserverMode *string WebserverMode *string
EnableCustomEmoji *bool EnableCustomEmoji *bool
EnableEmojiPicker *bool EnableEmojiPicker *bool
RestrictCustomEmojiCreation *string RestrictCustomEmojiCreation *string
RestrictPostDelete *string RestrictPostDelete *string
AllowEditPost *string AllowEditPost *string
PostEditTimeLimit *int PostEditTimeLimit *int
TimeBetweenUserTypingUpdatesMilliseconds *int64 TimeBetweenUserTypingUpdatesMilliseconds *int64
EnablePostSearch *bool EnablePostSearch *bool
EnableUserTypingMessages *bool EnableUserTypingMessages *bool
EnableChannelViewedMessages *bool EnableChannelViewedMessages *bool
EnableUserStatuses *bool EnableUserStatuses *bool
ExperimentalEnableAuthenticationTransfer *bool ExperimentalEnableAuthenticationTransfer *bool
ClusterLogTimeoutMilliseconds *int ClusterLogTimeoutMilliseconds *int
CloseUnusedDirectMessages *bool CloseUnusedDirectMessages *bool
EnablePreviewFeatures *bool EnablePreviewFeatures *bool
EnableTutorial *bool EnableTutorial *bool
ExperimentalEnableDefaultChannelLeaveJoinMessages *bool
} }
func (s *ServiceSettings) SetDefaults() { func (s *ServiceSettings) SetDefaults() {
@@ -413,6 +414,10 @@ func (s *ServiceSettings) SetDefaults() {
if s.EnablePreviewFeatures == nil { if s.EnablePreviewFeatures == nil {
s.EnablePreviewFeatures = NewBool(true) s.EnablePreviewFeatures = NewBool(true)
} }
if s.ExperimentalEnableDefaultChannelLeaveJoinMessages == nil {
s.ExperimentalEnableDefaultChannelLeaveJoinMessages = NewBool(true)
}
} }
type ClusterSettings struct { type ClusterSettings struct {

View File

@@ -475,6 +475,7 @@ func GenerateClientConfig(c *model.Config, diagnosticId string) map[string]strin
props["CloseUnusedDirectMessages"] = strconv.FormatBool(*c.ServiceSettings.CloseUnusedDirectMessages) props["CloseUnusedDirectMessages"] = strconv.FormatBool(*c.ServiceSettings.CloseUnusedDirectMessages)
props["EnablePreviewFeatures"] = strconv.FormatBool(*c.ServiceSettings.EnablePreviewFeatures) props["EnablePreviewFeatures"] = strconv.FormatBool(*c.ServiceSettings.EnablePreviewFeatures)
props["EnableTutorial"] = strconv.FormatBool(*c.ServiceSettings.EnableTutorial) props["EnableTutorial"] = strconv.FormatBool(*c.ServiceSettings.EnableTutorial)
props["ExperimentalEnableDefaultChannelLeaveJoinMessages"] = strconv.FormatBool(*c.ServiceSettings.ExperimentalEnableDefaultChannelLeaveJoinMessages)
props["SendEmailNotifications"] = strconv.FormatBool(c.EmailSettings.SendEmailNotifications) props["SendEmailNotifications"] = strconv.FormatBool(c.EmailSettings.SendEmailNotifications)
props["SendPushNotifications"] = strconv.FormatBool(*c.EmailSettings.SendPushNotifications) props["SendPushNotifications"] = strconv.FormatBool(*c.EmailSettings.SendPushNotifications)