Show users their own posts in timeline.
authorlain <lain@soykaf.club>
Sun, 18 Feb 2018 14:20:36 +0000 (15:20 +0100)
committerlain <lain@soykaf.club>
Sun, 18 Feb 2018 14:20:36 +0000 (15:20 +0100)
lib/pleroma/web/activity_pub/activity_pub.ex
lib/pleroma/web/common_api/utils.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/twitter_api/twitter_api.ex

index d171913f81e11ff440e3391af76fb6fd19ec33fd..406207f62826c574e40b03645d145a91719b5ffa 100644 (file)
@@ -151,11 +151,16 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
   end
   defp restrict_tag(query, _), do: query
 
-  defp restrict_recipients(query, []), do: query
-  defp restrict_recipients(query, recipients) do
+  defp restrict_recipients(query, [], user), do: query
+  defp restrict_recipients(query, recipients, nil) do
     from activity in query,
      where: fragment("? && ?", ^recipients, activity.recipients)
   end
+  defp restrict_recipients(query, recipients, user) do
+    from activity in query,
+      where: fragment("? && ?", ^recipients, activity.recipients),
+      or_where: activity.actor == ^user.ap_id
+  end
 
   defp restrict_local(query, %{"local_only" => true}) do
     from activity in query, where: activity.local == true
@@ -216,7 +221,7 @@ defmodule Pleroma.Web.ActivityPub.ActivityPub do
       order_by: [fragment("? desc nulls last", activity.id)]
 
     base_query
-    |> restrict_recipients(recipients)
+    |> restrict_recipients(recipients, opts["user"])
     |> restrict_tag(opts)
     |> restrict_since(opts)
     |> restrict_local(opts)
index ea95c134c8d47eca8bce41e5609a385ed6c8b690..75c63e5f418bc79ed8938e59d94cc0c3e08b9a1e 100644 (file)
@@ -27,7 +27,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do
   def to_for_user_and_mentions(user, mentions, inReplyTo, "public") do
     to = ["https://www.w3.org/ns/activitystreams#Public"]
 
-    mentioned_users = Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end) ++ [user.ap_id]
+    mentioned_users = Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end)
     cc = [user.follower_address | mentioned_users]
     if inReplyTo do
       {to, Enum.uniq([inReplyTo.data["actor"] | cc])}
@@ -47,7 +47,7 @@ defmodule Pleroma.Web.CommonAPI.Utils do
   end
 
   def to_for_user_and_mentions(user, mentions, inReplyTo, "direct") do
-    mentioned_users = Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end) ++ [user.ap_id]
+    mentioned_users = Enum.map(mentions, fn ({_, %{ap_id: ap_id}}) -> ap_id end)
     if inReplyTo do
       {Enum.uniq([inReplyTo.data["actor"] | mentioned_users]), []}
     else
index e16a2a092aeea4a87242c6b1c7fc80c0c8ef7559..f52ac58de97971225ab259fde568c55821ccd410 100644 (file)
@@ -150,6 +150,7 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
     params = params
     |> Map.put("type", ["Create", "Announce"])
     |> Map.put("blocking_user", user)
+    |> Map.put("user", user)
 
     activities = ActivityPub.fetch_activities([user.ap_id | user.following], params)
     |> Enum.reverse
index faecebde09170ede76e30e43166397ba09b28b29..57795edba66c7025108830d4cefd15bca945d0e4 100644 (file)
@@ -13,7 +13,10 @@ defmodule Pleroma.Web.TwitterAPI.TwitterAPI do
   end
 
   def fetch_friend_statuses(user, opts \\ %{}) do
-    opts = Map.put(opts, "blocking_user", user)
+    opts = opts
+    |> Map.put("blocking_user", user)
+    |> Map.put("user", user)
+
     ActivityPub.fetch_activities([user.ap_id | user.following], opts)
     |> activities_to_statuses(%{for: user})
   end