favorites: remove is_favorited attribute from post API.
* Remove the data-is-favorited attribute from post thumbnails. * Remove the is_favorited attribute from the /posts.json API. * Remove the fav_string attribute from the /posts.json API (only visible to moderators). * Change `Post#favorited_by?` to not use the fav_string. Further addresses #4652 by eliminating the last places where fav_string was used.
This commit is contained in:
@@ -762,12 +762,11 @@ class Post < ApplicationRecord
|
||||
update_column(:fav_count, fav_count)
|
||||
end
|
||||
|
||||
def favorited_by?(user_id = CurrentUser.id)
|
||||
fav_string.match?(/(?:\A| )fav:#{user_id}(?:\Z| )/)
|
||||
def favorited_by?(user)
|
||||
return false if user.is_anonymous?
|
||||
Favorite.exists?(post: self, user: user)
|
||||
end
|
||||
|
||||
alias is_favorited? favorited_by?
|
||||
|
||||
def append_user_to_fav_string(user_id)
|
||||
update_column(:fav_string, (fav_string + " fav:#{user_id}").strip)
|
||||
clean_fav_string! if clean_fav_string?
|
||||
|
||||
@@ -88,11 +88,11 @@ class PostPolicy < ApplicationPolicy
|
||||
|
||||
def api_attributes
|
||||
attributes = super
|
||||
attributes += [:has_large, :has_visible_children, :is_favorited?]
|
||||
attributes += [:has_large, :has_visible_children]
|
||||
attributes += TagCategory.categories.map {|x| "tag_string_#{x}".to_sym}
|
||||
attributes += [:file_url, :large_file_url, :preview_file_url] if visible?
|
||||
attributes -= [:id, :md5, :file_ext] if !visible?
|
||||
attributes -= [:fav_string] if !user.is_moderator?
|
||||
attributes -= [:fav_string]
|
||||
attributes
|
||||
end
|
||||
|
||||
|
||||
@@ -131,7 +131,6 @@ class PostPresenter
|
||||
"data-source" => post.source,
|
||||
"data-uploader-id" => post.uploader_id,
|
||||
"data-normalized-source" => post.normalized_source,
|
||||
"data-is-favorited" => post.favorited_by?(CurrentUser.user.id)
|
||||
}
|
||||
|
||||
if post.visible?
|
||||
|
||||
@@ -38,11 +38,7 @@
|
||||
<%= link_to recommended_posts_path(search: { post_id: post.id }), class: "more-recommended-posts", "data-post-id": post.id do %>
|
||||
<%= post.fav_count %>
|
||||
|
||||
<% if post.favorited_by?(CurrentUser.id) %>
|
||||
<i class="fas fa-heart fa-xs"></i>
|
||||
<% else %>
|
||||
<i class="far fa-heart fa-xs"></i>
|
||||
<% end %>
|
||||
<i class="far fa-heart fa-xs"></i>
|
||||
|
||||
<br>more »
|
||||
<% end %>
|
||||
|
||||
@@ -23,10 +23,10 @@
|
||||
|
||||
<% if policy(Favorite).create? %>
|
||||
<li id="post-option-add-to-favorites">
|
||||
<%= link_to "Favorite", favorites_path(post_id: post.id), remote: true, method: :post, id: "add-to-favorites", "data-shortcut": "f", style: ("display: none;" if @post.is_favorited?) %>
|
||||
<%= link_to "Favorite", favorites_path(post_id: post.id), remote: true, method: :post, id: "add-to-favorites", "data-shortcut": "f", style: ("display: none;" if @post.favorited_by?(CurrentUser.user)) %>
|
||||
</li>
|
||||
<li id="post-option-remove-from-favorites">
|
||||
<%= link_to "Unfavorite", favorite_path(post), remote: true, method: :delete, id: "remove-from-favorites", "data-shortcut": "shift+f", "data-shortcut-when": ":visible", style: ("display: none;" if !@post.is_favorited?) %>
|
||||
<%= link_to "Unfavorite", favorite_path(post), remote: true, method: :delete, id: "remove-from-favorites", "data-shortcut": "shift+f", "data-shortcut-when": ":visible", style: ("display: none;" if !@post.favorited_by?(CurrentUser.user)) %>
|
||||
</li>
|
||||
<% end %>
|
||||
<% if policy(post).update? %>
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<% end -%>
|
||||
|
||||
<% if policy(Favorite).create? %>
|
||||
<%= content_tag(:div, class: "fav-buttons fav-buttons-#{@post.is_favorited?}") do %>
|
||||
<%= content_tag(:div, class: "fav-buttons fav-buttons-#{@post.favorited_by?(CurrentUser.user)}") do %>
|
||||
<%= form_tag(favorites_path(post_id: @post.id), method: "post", id: "add-fav-button", "data-remote": true) do %>
|
||||
<%= button_tag tag.i(class: "far fa-heart"), class: "ui-button ui-widget ui-corner-all", "data-disable-with": tag.i(class: "fas fa-spinner fa-spin") %>
|
||||
<% end %>
|
||||
|
||||
@@ -633,7 +633,6 @@ class PostsControllerTest < ActionDispatch::IntegrationTest
|
||||
assert_response :success
|
||||
assert_nil(response.parsed_body["md5"])
|
||||
assert_nil(response.parsed_body["file_url"])
|
||||
assert_nil(response.parsed_body["fav_string"])
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user