% cache membership do %>
<% members = membership.room.users.without(membership.user).presence || [ membership.user ] %>
<%= link_to_room membership.room, class: [ "direct", "unread": membership.unread? ], id: dom_id(membership.room, :list),
data: { sorted_list_number: membership.room.updated_at.to_fs(:epoch) } do %>
<% if members.many? %>
<% members.first(4).each do |member| %>
<%= image_tag fresh_user_avatar_path(member), size: 20, aria: { hidden: "true" } %>
<% end %>
<% else %>
<%= image_tag fresh_user_avatar_path(members.first), size: 48, aria: { hidden: "true" } %>
<% end %>
Ping with
<% if members.many? %>
<%= members.map { |member| member.name.split(' ')[0, 3].map { |str| str[0].capitalize }.join }.to_sentence(two_words_connector: '+') %>
<% else %>
<%= members.first.name.split(' ')[0] %>
<% end %>
<% end %>
<% end %>