aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorkaniini <nenolod@gmail.com>2019-04-28 00:21:32 +0000
committerkaniini <nenolod@gmail.com>2019-04-28 00:21:32 +0000
commitf2a4156d4969dee37c88e0d540eff04176673af7 (patch)
treee569cce24843fb1751996727cc7aa66af14cadb1 /lib
parent002ea343f8c6dc9669bce91942f835a2c7cc6ae7 (diff)
parentc3e9fcf098e4ec17a387fe264193dca4dda2dd77 (diff)
downloadpleroma-f2a4156d4969dee37c88e0d540eff04176673af7.tar.gz
Merge branch 'fix/bookmark-depend-on-embeded-object' into 'develop'
Fix bookmarks depending on embeded object and move checking if the status is bookmarked to SQL See merge request pleroma/pleroma!1099
Diffstat (limited to 'lib')
-rw-r--r--lib/pleroma/bookmark.ex7
-rw-r--r--lib/pleroma/web/common_api/common_api.ex10
-rw-r--r--lib/pleroma/web/mastodon_api/views/status_view.ex12
3 files changed, 19 insertions, 10 deletions
diff --git a/lib/pleroma/bookmark.ex b/lib/pleroma/bookmark.ex
index c5c3e078b..7f8fd43b6 100644
--- a/lib/pleroma/bookmark.ex
+++ b/lib/pleroma/bookmark.ex
@@ -41,6 +41,13 @@ defmodule Pleroma.Bookmark do
|> preload([b, a], activity: a)
end
+ def get(user_id, activity_id) do
+ Bookmark
+ |> where(user_id: ^user_id)
+ |> where(activity_id: ^activity_id)
+ |> Repo.one()
+ end
+
@spec destroy(FlakeId.t(), FlakeId.t()) :: {:ok, Bookmark.t()} | {:error, Changeset.t()}
def destroy(user_id, activity_id) do
from(b in Bookmark,
diff --git a/lib/pleroma/web/common_api/common_api.ex b/lib/pleroma/web/common_api/common_api.ex
index cfbc5dc10..ecd183110 100644
--- a/lib/pleroma/web/common_api/common_api.ex
+++ b/lib/pleroma/web/common_api/common_api.ex
@@ -4,6 +4,7 @@
defmodule Pleroma.Web.CommonAPI do
alias Pleroma.Activity
+ alias Pleroma.Bookmark
alias Pleroma.Formatter
alias Pleroma.Object
alias Pleroma.ThreadMute
@@ -282,6 +283,15 @@ defmodule Pleroma.Web.CommonAPI do
end
end
+ def bookmarked?(user, activity) do
+ with %Bookmark{} <- Bookmark.get(user.id, activity.id) do
+ true
+ else
+ _ ->
+ false
+ end
+ end
+
def report(user, data) do
with {:account_id, %{"account_id" => account_id}} <- {:account_id, data},
{:account, %User{} = account} <- {:account, User.get_cached_by_id(account_id)},
diff --git a/lib/pleroma/web/mastodon_api/views/status_view.ex b/lib/pleroma/web/mastodon_api/views/status_view.ex
index 57cb9fdcc..62d064d71 100644
--- a/lib/pleroma/web/mastodon_api/views/status_view.ex
+++ b/lib/pleroma/web/mastodon_api/views/status_view.ex
@@ -86,11 +86,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
activity_object = Object.normalize(activity)
favorited = opts[:for] && opts[:for].ap_id in (activity_object.data["likes"] || [])
- bookmarked =
- opts[:for] && Ecto.assoc_loaded?(opts[:for].bookmarks) &&
- Enum.any?(opts[:for].bookmarks, fn b ->
- b.activity_id == activity.id or b.activity.data["object"]["id"] == object
- end)
+ bookmarked = opts[:for] && CommonAPI.bookmarked?(opts[:for], reblogged_activity)
mentions =
activity.recipients
@@ -153,11 +149,7 @@ defmodule Pleroma.Web.MastodonAPI.StatusView do
favorited = opts[:for] && opts[:for].ap_id in (object.data["likes"] || [])
- bookmarked =
- opts[:for] && Ecto.assoc_loaded?(opts[:for].bookmarks) &&
- Enum.any?(opts[:for].bookmarks, fn b ->
- b.activity_id == activity.id
- end)
+ bookmarked = opts[:for] && CommonAPI.bookmarked?(opts[:for], activity)
attachment_data = object.data["attachment"] || []
attachments = render_many(attachment_data, StatusView, "attachment.json", as: :attachment)