mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
PERF: Exclude anon sidebar tags in site serializer for logged in user (#18527)
This commits excludes the `anonymous_default_sidebar_tags` property in `SiteSerializer` when user is not anonymous and when tagging has been disabled.
This commit is contained in:
parent
086f4775cd
commit
a7bdd0a58e
@ -1682,10 +1682,12 @@ class User < ActiveRecord::Base
|
|||||||
|
|
||||||
def sidebar_tags
|
def sidebar_tags
|
||||||
return custom_sidebar_tags if custom_sidebar_tags.present?
|
return custom_sidebar_tags if custom_sidebar_tags.present?
|
||||||
|
|
||||||
if SiteSetting.default_sidebar_tags.present?
|
if SiteSetting.default_sidebar_tags.present?
|
||||||
tag_names = SiteSetting.default_sidebar_tags.split("|") - DiscourseTagging.hidden_tag_names(guardian)
|
tag_names = SiteSetting.default_sidebar_tags.split("|") - DiscourseTagging.hidden_tag_names(guardian)
|
||||||
return Tag.where(name: tag_names)
|
return Tag.where(name: tag_names)
|
||||||
end
|
end
|
||||||
|
|
||||||
Tag.none
|
Tag.none
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ class SiteSerializer < ApplicationSerializer
|
|||||||
end
|
end
|
||||||
|
|
||||||
def include_anonymous_default_sidebar_tags?
|
def include_anonymous_default_sidebar_tags?
|
||||||
SiteSetting.default_sidebar_tags.present?
|
scope.anonymous? && SiteSetting.tagging_enabled && SiteSetting.default_sidebar_tags.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
@ -125,15 +125,45 @@ RSpec.describe SiteSerializer do
|
|||||||
expect(serialized[:show_welcome_topic_banner]).to eq(true)
|
expect(serialized[:show_welcome_topic_banner]).to eq(true)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'includes anonymous_default_sidebar_tags' do
|
describe '#anonymous_default_sidebar_tags' do
|
||||||
Fabricate(:tag, name: "dev")
|
fab!(:user) { Fabricate(:user) }
|
||||||
Fabricate(:tag, name: "random")
|
|
||||||
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
|
||||||
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
|
||||||
|
|
||||||
SiteSetting.default_sidebar_tags = "dev|random"
|
it 'is not included in the serialised object when tagging is not enabled' do
|
||||||
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
SiteSetting.tagging_enabled = false
|
||||||
expect(serialized[:anonymous_default_sidebar_tags]).to eq(["dev", "random"])
|
guardian = Guardian.new(user)
|
||||||
|
|
||||||
|
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
||||||
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe 'when tagging is enabled and default sidebar tags have been configured' do
|
||||||
|
fab!(:tag) { Fabricate(:tag, name: 'dev') }
|
||||||
|
fab!(:tag2) { Fabricate(:tag, name: 'random') }
|
||||||
|
|
||||||
|
before do
|
||||||
|
SiteSetting.tagging_enabled = true
|
||||||
|
SiteSetting.default_sidebar_tags = "#{tag.name}|#{tag2.name}"
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is not included in the serialised object when user is not anonymous' do
|
||||||
|
guardian = Guardian.new(user)
|
||||||
|
|
||||||
|
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
||||||
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is not included in the serialisd object when default sidebar tags have not been configured' do
|
||||||
|
SiteSetting.default_sidebar_tags = ""
|
||||||
|
|
||||||
|
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
||||||
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'is included in the serialised object when user is anonymous' do
|
||||||
|
serialized = described_class.new(Site.new(guardian), scope: guardian, root: false).as_json
|
||||||
|
expect(serialized[:anonymous_default_sidebar_tags]).to eq(["dev", "random"])
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe '#top_tags' do
|
describe '#top_tags' do
|
||||||
|
Loading…
Reference in New Issue
Block a user