From 3048f5d4352f5e4db7b7a6619d1e2afb82f8b8fc Mon Sep 17 00:00:00 2001 From: Ashish Bhate Date: Wed, 25 Aug 2021 19:25:30 +0530 Subject: [PATCH] MM-37787: ThreadAutoFollow must be true to enable CollapsedThreads (#18253) * MM-37787: ThreadAutoFollow must be true to enable CollapsedThreads * check if defaults are valid --- i18n/en.json | 4 ++++ model/config.go | 4 ++++ model/config_test.go | 26 ++++++++++++++++++++++++++ 3 files changed, 34 insertions(+) diff --git a/i18n/en.json b/i18n/en.json index fcfb189793..8c3fe054ca 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -7890,6 +7890,10 @@ "id": "model.config.is_valid.collapsed_threads.app_error", "translation": "CollapsedThreads setting must be either disabled,default_on or default_off" }, + { + "id": "model.config.is_valid.collapsed_threads.autofollow.app_error", + "translation": "ThreadAutoFollow must be true to enable CollapsedThreads" + }, { "id": "model.config.is_valid.data_retention.deletion_job_start_time.app_error", "translation": "Data retention job start time must be a 24-hour time stamp in the form HH:MM." diff --git a/model/config.go b/model/config.go index 1e878f4cb0..2ec109f2c9 100644 --- a/model/config.go +++ b/model/config.go @@ -3703,6 +3703,10 @@ func (s *ServiceSettings) isValid() *AppError { return NewAppError("Config.IsValid", "model.config.is_valid.group_unread_channels.app_error", nil, "", http.StatusBadRequest) } + if *s.CollapsedThreads != CollapsedThreadsDisabled && !*s.ThreadAutoFollow { + return NewAppError("Config.IsValid", "model.config.is_valid.collapsed_threads.autofollow.app_error", nil, "", http.StatusBadRequest) + } + if *s.CollapsedThreads != CollapsedThreadsDisabled && *s.CollapsedThreads != CollapsedThreadsDefaultOn && *s.CollapsedThreads != CollapsedThreadsDefaultOff { diff --git a/model/config_test.go b/model/config_test.go index be1483d0de..7dbd0db33c 100644 --- a/model/config_test.go +++ b/model/config_test.go @@ -1467,3 +1467,29 @@ func TestConfigExportSettingsIsValid(t *testing.T) { require.NotNil(t, err) require.Equal(t, "model.config.is_valid.export.retention_days_too_low.app_error", err.Id) } + +func TestConfigServiceSettingsIsValid(t *testing.T) { + cfg := Config{} + cfg.SetDefaults() + + err := cfg.ServiceSettings.isValid() + require.Nil(t, err) + + *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDisabled + err = cfg.ServiceSettings.isValid() + require.Nil(t, err) + + *cfg.ServiceSettings.ThreadAutoFollow = false + err = cfg.ServiceSettings.isValid() + require.Nil(t, err) + + *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOff + err = cfg.ServiceSettings.isValid() + require.NotNil(t, err) + require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", err.Id) + + *cfg.ServiceSettings.CollapsedThreads = CollapsedThreadsDefaultOn + err = cfg.ServiceSettings.isValid() + require.NotNil(t, err) + require.Equal(t, "model.config.is_valid.collapsed_threads.autofollow.app_error", err.Id) +}