FEATURE: Let users select flair (#13587)

User flair was given by user's primary group. This PR separates the
two, adds a new field to the user model for flair group ID and users
can select their flair from user preferences now.
This commit is contained in:
Bianca Nenciu
2021-07-08 10:46:21 +03:00
committed by GitHub
parent c6f2459cc4
commit 87c1e98571
64 changed files with 625 additions and 326 deletions
@@ -4,9 +4,10 @@ module UserPrimaryGroupMixin
def self.included(klass)
klass.attributes :primary_group_name,
:primary_group_flair_url,
:primary_group_flair_bg_color,
:primary_group_flair_color,
:flair_name,
:flair_url,
:flair_bg_color,
:flair_color,
:admin,
:moderator,
:trust_level
@@ -20,28 +21,36 @@ module UserPrimaryGroupMixin
object&.primary_group.present?
end
def primary_group_flair_url
object&.primary_group&.flair_url
def flair_name
object&.flair_group&.name
end
def include_primary_group_flair_url?
object&.primary_group&.flair_url.present?
def include_flair_group_name?
object&.flair_group.present?
end
def primary_group_flair_bg_color
object&.primary_group&.flair_bg_color
def flair_url
object&.flair_group&.flair_url
end
def include_primary_group_flair_bg_color?
object&.primary_group&.flair_bg_color.present?
def include_flair_url?
object&.flair_group&.flair_url.present?
end
def primary_group_flair_color
object&.primary_group&.flair_color
def flair_bg_color
object&.flair_group&.flair_bg_color
end
def include_primary_group_flair_color?
object&.primary_group&.flair_color.present?
def include_flair_bg_color?
object&.flair_group&.flair_bg_color.present?
end
def flair_color
object&.flair_group&.flair_color
end
def include_flair_color?
object&.flair_group&.flair_color.present?
end
def include_admin?
@@ -48,6 +48,7 @@ class CurrentUserSerializer < BasicUserSerializer
:previous_visit_at,
:seen_notification_id,
:primary_group_id,
:flair_group_id,
:can_create_topic,
:can_create_group,
:link_posting_access,
@@ -0,0 +1,5 @@
# frozen_string_literal: true
class FlairGroupSerializer < ApplicationSerializer
attributes :id, :name, :flair_url, :flair_bg_color, :flair_color
end
+14 -9
View File
@@ -36,9 +36,10 @@ class PostSerializer < BasicPostSerializer
:category_id,
:display_username,
:primary_group_name,
:primary_group_flair_url,
:primary_group_flair_bg_color,
:primary_group_flair_color,
:flair_name,
:flair_url,
:flair_bg_color,
:flair_color,
:version,
:can_edit,
:can_delete,
@@ -188,16 +189,20 @@ class PostSerializer < BasicPostSerializer
end
end
def primary_group_flair_url
object.user&.primary_group&.flair_url
def flair_name
object.user&.flair_group&.name
end
def primary_group_flair_bg_color
object.user&.primary_group&.flair_bg_color
def flair_url
object.user&.flair_group&.flair_url
end
def primary_group_flair_color
object.user&.primary_group&.flair_color
def flair_bg_color
object.user&.flair_group&.flair_bg_color
end
def flair_color
object.user&.flair_group&.flair_color
end
def link_counts
+1 -1
View File
@@ -1,5 +1,5 @@
# frozen_string_literal: true
class PrimaryGroupSerializer < ApplicationSerializer
attributes :id, :name, :flair_url, :flair_bg_color, :flair_color
attributes :id, :name
end
+11 -7
View File
@@ -3,7 +3,7 @@
class TopicPostCountSerializer < BasicUserSerializer
attributes :post_count, :primary_group_name,
:primary_group_flair_url, :primary_group_flair_color, :primary_group_flair_bg_color,
:flair_name, :flair_url, :flair_color, :flair_bg_color,
:admin, :moderator, :trust_level,
def id
@@ -23,16 +23,20 @@ class TopicPostCountSerializer < BasicUserSerializer
object[:user]&.primary_group&.name
end
def primary_group_flair_url
object[:user]&.primary_group&.flair_url
def flair_name
object[:user]&.flair_group&.name
end
def primary_group_flair_bg_color
object[:user]&.primary_group&.flair_bg_color
def flair_url
object[:user]&.flair_group&.flair_url
end
def primary_group_flair_color
object[:user]&.primary_group&.flair_color
def flair_bg_color
object[:user]&.flair_group&.flair_bg_color
end
def flair_color
object[:user]&.flair_group&.flair_color
end
def include_admin?
@@ -5,4 +5,5 @@ class TopicPosterSerializer < ApplicationSerializer
has_one :user, serializer: PosterSerializer
has_one :primary_group, serializer: PrimaryGroupSerializer
has_one :flair_group, serializer: FlairGroupSerializer
end
+15 -10
View File
@@ -59,9 +59,10 @@ class UserCardSerializer < BasicUserSerializer
:recent_time_read,
:primary_group_id,
:primary_group_name,
:primary_group_flair_url,
:primary_group_flair_bg_color,
:primary_group_flair_color,
:flair_name,
:flair_url,
:flair_bg_color,
:flair_color,
:featured_topic,
:timezone
@@ -181,19 +182,23 @@ class UserCardSerializer < BasicUserSerializer
end
def primary_group_name
object.primary_group.try(:name)
object.primary_group&.name
end
def primary_group_flair_url
object.try(:primary_group).try(:flair_url)
def flair_name
object.flair_group&.name
end
def primary_group_flair_bg_color
object.try(:primary_group).try(:flair_bg_color)
def flair_url
object.flair_group&.flair_url
end
def primary_group_flair_color
object.try(:primary_group).try(:flair_color)
def flair_bg_color
object.flair_group&.flair_bg_color
end
def flair_color
object.flair_group&.flair_color
end
def featured_topic
+14 -9
View File
@@ -29,9 +29,10 @@ class UserSummarySerializer < ApplicationSerializer
:admin,
:moderator,
:trust_level,
:primary_group_flair_url,
:primary_group_flair_bg_color,
:primary_group_flair_color,
:flair_name,
:flair_url,
:flair_bg_color,
:flair_color,
:primary_group_name
def include_name?
@@ -42,16 +43,20 @@ class UserSummarySerializer < ApplicationSerializer
User.avatar_template(object[:username], object[:uploaded_avatar_id])
end
def primary_group_flair_url
object.primary_group&.flair_url
def flair_name
object.flair_group&.name
end
def primary_group_flair_bg_color
object.primary_group&.flair_bg_color
def flair_url
object.flair_group&.flair_url
end
def primary_group_flair_color
object.primary_group&.flair_color
def flair_bg_color
object.flair_group&.flair_bg_color
end
def flair_color
object.flair_group&.flair_color
end
def primary_group_name
+3 -3
View File
@@ -28,9 +28,9 @@ class WebHookPostSerializer < PostSerializer
actions_summary
can_view_edit_history
yours
primary_group_flair_url
primary_group_flair_bg_color
primary_group_flair_color
flair_url
flair_bg_color
flair_color
notice
}.each do |attr|
define_method("include_#{attr}?") do