app/views/admin/users/_user.html.erb
<div data-controller="admin--user" data-admin--user-deleted="<%= user.soft_deleted? %>" data-admin--user-spam="<%= user.is_spam? %>">
<div class="date_column">
<%= local_time_ago user.created_at %>
<div class="deleted_at_date"><%== "Deleted #{local_time_ago user.deleted_at}" if user.deleted_at %></div>
</div>
<div class="user_column">
<div class="avatar">
<%= user_image(user, variant: :large_avatar) %>
</div>
<div>
<div><%= link_to(user.display_name, admin_possibly_deleted_user_path(user.login)) %></div>
<div><%= user.email %></div>
<% unless user.soft_deleted? %>
<div>
<% if user.never_activated? %>
[ unactivated ]
<% else %>
<%= user.current_login_ip %>
<% if User.with_same_ip_as(user).count > 0 %>
<%= link_to "Spam All #{User.with_same_ip_as(user).count + 1}", mark_all_users_with_ip_as_spam_admin_user_path(user), method: :put %>
<% end %>
<% end %>
</div>
<% end %>
</div>
</div>
<div class="bio_column">
<div><%= truncate(user&.profile&.bio, length: 200) %></div>
<div><%= user&.profile&.website %></div>
<div><%= link_to "#{user.assets.count} tracks", user_tracks_path(user) if user.assets.count > 0 && !user.soft_deleted? %></div>
</div>
<div class="button_column">
<%= button_to "Unspam User", unspam_admin_user_path(user), method: :put, data: { 'admin--user-target': 'unspamButton', action: 'click->admin--user#hideUnspamButton' } %>
<%= button_to "Spam User", spam_admin_user_path(user), method: :put, data: { 'admin--user-target': 'spamButton', action: 'click->admin--user#hideSpamAndShowRestoreButton' } %>
<%= button_to "Delete User", delete_admin_user_path(user), method: :put, data: { 'admin--user-target': 'deleteButton', action: 'admin--user#showRestoreButton' } %></td>
<%= button_to "Restore User", restore_admin_user_path(user), method: :put, data: { 'admin--user-target': 'restoreButton', action: 'click->admin--user#showDeleteAndSpamButton' } %></td>
</div>
</div>