diff --git a/app/post_metadata.go b/app/post_metadata.go index 2d6ff1b6e9..9fc282c5b6 100644 --- a/app/post_metadata.go +++ b/app/post_metadata.go @@ -52,6 +52,10 @@ func (a *App) PreparePostForClient(originalPost *model.Post) *model.Post { // Proxy image links before constructing metadata so that requests go through the proxy post = a.PostWithProxyAddedToImageURLs(post) + if *a.Config().ExperimentalSettings.DisablePostMetadata { + return post + } + post.Metadata = &model.PostMetadata{} // Emojis and reaction counts diff --git a/app/post_metadata_test.go b/app/post_metadata_test.go index 9ca9eced30..c174ec18e6 100644 --- a/app/post_metadata_test.go +++ b/app/post_metadata_test.go @@ -24,6 +24,10 @@ func TestPreparePostListForClient(t *testing.T) { th := Setup().InitBasic() defer th.TearDown() + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.ExperimentalSettings.DisablePostMetadata = false + }) + postList := model.NewPostList() for i := 0; i < 5; i++ { postList.AddPost(&model.Post{}) @@ -57,6 +61,7 @@ func TestPreparePostForClient(t *testing.T) { *cfg.ServiceSettings.ImageProxyType = "" *cfg.ServiceSettings.ImageProxyURL = "" *cfg.ServiceSettings.ImageProxyOptions = "" + *cfg.ExperimentalSettings.DisablePostMetadata = false }) return th @@ -384,6 +389,20 @@ func TestPreparePostForClient(t *testing.T) { }, imageDimensions["https://github.com/hmhealey/test-files/raw/master/icon.png"]) }) }) + + t.Run("when disabled", func(t *testing.T) { + th := setup() + defer th.TearDown() + + th.App.UpdateConfig(func(cfg *model.Config) { + *cfg.ExperimentalSettings.DisablePostMetadata = true + }) + + post := th.CreatePost(th.BasicChannel) + post = th.App.PreparePostForClient(post) + + assert.Nil(t, post.Metadata) + }) } func TestPreparePostForClientWithImageProxy(t *testing.T) { @@ -395,6 +414,7 @@ func TestPreparePostForClientWithImageProxy(t *testing.T) { *cfg.ServiceSettings.ImageProxyType = "atmos/camo" *cfg.ServiceSettings.ImageProxyURL = "https://127.0.0.1" *cfg.ServiceSettings.ImageProxyOptions = "foo" + *cfg.ExperimentalSettings.DisablePostMetadata = false }) return th diff --git a/config/default.json b/config/default.json index 6cbca6a0a6..2ccfb2dde1 100644 --- a/config/default.json +++ b/config/default.json @@ -360,7 +360,8 @@ }, "ExperimentalSettings": { "ClientSideCertEnable": false, - "ClientSideCertCheck": "secondary" + "ClientSideCertCheck": "secondary", + "DisablePostMetadata": false }, "AnalyticsSettings": { "MaxUsersForStatistics": 2500 diff --git a/model/config.go b/model/config.go index 3af08f5974..dd5ce7af97 100644 --- a/model/config.go +++ b/model/config.go @@ -651,6 +651,7 @@ func (s *MetricsSettings) SetDefaults() { type ExperimentalSettings struct { ClientSideCertEnable *bool ClientSideCertCheck *string + DisablePostMetadata *bool } func (s *ExperimentalSettings) SetDefaults() { @@ -661,6 +662,10 @@ func (s *ExperimentalSettings) SetDefaults() { if s.ClientSideCertCheck == nil { s.ClientSideCertCheck = NewString(CLIENT_SIDE_CERT_CHECK_SECONDARY_AUTH) } + + if s.DisablePostMetadata == nil { + s.DisablePostMetadata = NewBool(false) + } } type AnalyticsSettings struct {