From 517f74a7489c824fe4c9cdeac2c02d74864203f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Tue, 26 Sep 2023 23:37:42 +0200 Subject: [PATCH] Extract component to render an initialjs avatar This way it'll be easier to change it. --- .../shared/avatar_component.html.erb | 1 + app/components/shared/avatar_component.rb | 23 +++++++++++++++++++ app/views/account/show.html.erb | 2 +- app/views/comments/_comment.html.erb | 2 +- app/views/communities/_participant.html.erb | 2 +- app/views/shared/_author_info.html.erb | 2 +- app/views/users/show.html.erb | 2 +- 7 files changed, 29 insertions(+), 5 deletions(-) create mode 100644 app/components/shared/avatar_component.html.erb create mode 100644 app/components/shared/avatar_component.rb diff --git a/app/components/shared/avatar_component.html.erb b/app/components/shared/avatar_component.html.erb new file mode 100644 index 000000000..d84a07cea --- /dev/null +++ b/app/components/shared/avatar_component.html.erb @@ -0,0 +1 @@ +<%= avatar_image(record, options) %> diff --git a/app/components/shared/avatar_component.rb b/app/components/shared/avatar_component.rb new file mode 100644 index 000000000..046951588 --- /dev/null +++ b/app/components/shared/avatar_component.rb @@ -0,0 +1,23 @@ +class Shared::AvatarComponent < ApplicationComponent + attr_reader :record, :given_options + delegate :avatar_image, to: :helpers + + def initialize(record, **given_options) + @record = record + @given_options = given_options + end + + private + + def default_options + { seed: seed } + end + + def options + default_options.merge(given_options) + end + + def seed + record.id + end +end diff --git a/app/views/account/show.html.erb b/app/views/account/show.html.erb index 161f904c6..9623976de 100644 --- a/app/views/account/show.html.erb +++ b/app/views/account/show.html.erb @@ -6,7 +6,7 @@ <%= link_to t("account.show.erase_account_link"), users_registrations_delete_form_path, class: "delete" %> - <%= avatar_image(@account, seed: @account.id, size: 100, class: "margin-bottom") %> + <%= render Shared::AvatarComponent.new(@account, size: 100, class: "margin-bottom") %>

<%= t("account.show.title") %>

diff --git a/app/views/comments/_comment.html.erb b/app/views/comments/_comment.html.erb index 549bab2d1..542fa0d71 100644 --- a/app/views/comments/_comment.html.erb +++ b/app/views/comments/_comment.html.erb @@ -19,7 +19,7 @@ <% elsif comment.user.organization? %> <%= image_tag("avatar_collective.png", size: 32, class: "avatar float-left") %> <% else %> - <%= avatar_image(comment.user, seed: comment.user_id, size: 32, class: "float-left") %> + <%= render Shared::AvatarComponent.new(comment.user, size: 32, class: "float-left") %> <% end %> <% end %> diff --git a/app/views/communities/_participant.html.erb b/app/views/communities/_participant.html.erb index 003b5a668..746ec42c7 100644 --- a/app/views/communities/_participant.html.erb +++ b/app/views/communities/_participant.html.erb @@ -1,7 +1,7 @@
- <%= avatar_image(participant, seed: participant.id, size: 32, class: "author-photo") %> + <%= render Shared::AvatarComponent.new(participant, size: 32, class: "author-photo") %>
diff --git a/app/views/shared/_author_info.html.erb b/app/views/shared/_author_info.html.erb index d732844b4..8b9f21b89 100644 --- a/app/views/shared/_author_info.html.erb +++ b/app/views/shared/_author_info.html.erb @@ -4,7 +4,7 @@ <%= t("shared.author_info.author_deleted") %> <% else %> - <%= avatar_image(resource.author, seed: resource.author_id, size: 32, class: "author-photo") %> + <%= render Shared::AvatarComponent.new(resource.author, size: 32, class: "author-photo") %> <%= link_to resource.author.name, user_path(resource.author) %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index d10b71bbc..0b500609b 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -15,7 +15,7 @@ <% end %>

- <%= avatar_image(@user, seed: @user.id, size: 60) %> + <%= render Shared::AvatarComponent.new(@user, size: 60) %> <%= @user.name %> <% if current_user&.administrator? %> <%= @user.email %>