Files
redux-scraper/app/views/domain/users/default/_recent_faved_posts.html.erb
2025-07-27 17:26:42 +00:00

48 lines
1.9 KiB
Plaintext

<%# nasty hack, otherwise postgres uses a bad query plan %>
<% if user.is_a?(Domain::User::FaUser) || user.is_a?(Domain::User::InkbunnyUser) %>
<% fav_posts = user.faved_posts.includes(:creator).limit(5) %>
<% else %>
<% fav_posts = user.faved_posts.limit(5) %>
<% end%>
<% post_favs = Domain::UserPostFav.where(user: user, post: fav_posts).index_by(&:post_id) %>
<section class="animated-shadow-sky sky-section">
<h2 class="section-header">
<span class="font-medium text-slate-900">Favorited Posts</span>
<span class="float-right">
<%= link_to "#{user.user_post_favs.size} total", domain_user_favorites_path(user), class: "blue-link" %>
</span>
</h2>
<% if fav_posts.any? %>
<% fav_posts.each do |post| %>
<div class="flex flex-col px-4 py-2 group">
<span class="flex gap-2 group-hover:flex-grow-1">
<%= render(
partial: "domain/has_description_html/inline_link_domain_post",
locals: {
post: post,
visual_style: "sky-link",
domain_icon: false
}
) %>
<span class="whitespace-nowrap flex-grow text-right text-slate-500">
<% user_post_fav = post_favs[post.id] %>
<% if (faved_at = user_post_fav&.faved_at) && (time = faved_at.time) %>
<%= time_ago_in_words(faved_at.time) %> ago
<% else %>
unknown
<% end %>
</span>
</span>
<% if creator = post.primary_creator_for_view %>
<span class="text-sm flex gap-1 items-center">
<span class="text-slate-500 italic">by</span>
<%= render "domain/has_description_html/inline_link_domain_user", user: creator, visual_style: "sky-link" %>
</span>
<% end %>
</div>
<% end %>
<% else %>
<div class="px-4 py-3 text-slate-500">No posts</div>
<% end %>
</section>