b1cdb72381
Move avatar_background_color logic from helper to User::Avatar concern so it can be accessed from models. Include creator_id, creator_initials, and creator_avatar_color in native push notifications for local avatar rendering on iOS. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
41 lines
1.4 KiB
Ruby
41 lines
1.4 KiB
Ruby
module AvatarsHelper
|
|
def avatar_background_color(user)
|
|
user.avatar_background_color
|
|
end
|
|
|
|
def avatar_tag(user, hidden_for_screen_reader: false, **options)
|
|
link_to user_path(user), class: class_names("avatar btn btn--circle", options.delete(:class)), data: { turbo_frame: "_top" },
|
|
aria: { hidden: hidden_for_screen_reader, label: user.name },
|
|
tabindex: hidden_for_screen_reader ? -1 : nil,
|
|
**options do
|
|
avatar_image_tag(user)
|
|
end
|
|
end
|
|
|
|
def avatar_tags(users, **options)
|
|
users.collect { avatar_tag(it, **options) }.join.html_safe
|
|
end
|
|
|
|
def mail_avatar_tag(user, size: 48, **options)
|
|
if user.avatar.attached?
|
|
image_tag user_avatar_url(user), alt: user.name, class: "avatar", size: size, **options
|
|
else
|
|
tag.span class: "avatar", style: "background-color: #{avatar_background_color(user)};" do
|
|
user.initials
|
|
end
|
|
end
|
|
end
|
|
|
|
def avatar_preview_tag(user, hidden_for_screen_reader: false, **options)
|
|
tag.span class: class_names("avatar", options.delete(:class)),
|
|
aria: { hidden: hidden_for_screen_reader, label: user.name },
|
|
tabindex: hidden_for_screen_reader ? -1 : nil do
|
|
avatar_image_tag(user, **options)
|
|
end
|
|
end
|
|
|
|
def avatar_image_tag(user, **options)
|
|
image_tag user_avatar_path(user, script_name: user.account.slug), aria: { hidden: "true" }, size: 48, title: user.name, **options
|
|
end
|
|
end
|