enforce visibility
authorsadposter <hannah+pleroma@coffee-and-dreams.uk>
Sun, 12 Dec 2021 18:25:20 +0000 (18:25 +0000)
committerFloatingGhost <hannah@coffee-and-dreams.uk>
Sun, 12 Dec 2021 20:12:06 +0000 (20:12 +0000)
lib/mix/tasks/pleroma/search.ex
lib/pleroma/search/elasticsearch.ex

index 9e0f376c38957a2c3042fb15b45196b9edabb07e..4e8e480d4cfb8bf22765bfdc37c80f58d60bc3e8 100644 (file)
@@ -15,13 +15,15 @@ defmodule Mix.Tasks.Pleroma.Search do
     start_pleroma()
 
     from(a in Activity, where: not ilike(a.actor, "%/relay"))
+    |> where([a], fragment("(? ->> 'type'::text) = 'Create'", a.data))
     |> Activity.with_preloaded_object()
     |> Activity.with_preloaded_user_actor()
     |> get_all
   end
 
   defp get_all(query, max_id \\ nil) do
-    params = %{limit: 20}
+    IO.puts(max_id)
+    params = %{limit: 2000}
 
     params =
       if max_id == nil do
@@ -38,6 +40,12 @@ defmodule Mix.Tasks.Pleroma.Search do
       :ok
     else
       res
+      |> Enum.filter(fn x -> 
+        t = x.object
+       |> Map.get(:data, %{})
+       |> Map.get("type", "")
+       t == "Note"
+      end)
       |> Pleroma.Elasticsearch.bulk_post(:activities)
 
       get_all(query, List.last(res).id)
index af2e13e48be4640691032d9252aabdc184e33944..4c0127f0f9a7d44e43f04136429e92f05825f266 100644 (file)
@@ -2,6 +2,7 @@ defmodule Pleroma.Search.Elasticsearch do
   @behaviour Pleroma.Search
 
   alias Pleroma.Web.MastodonAPI.StatusView
+  alias Pleroma.Web.ActivityPub.Visibility
 
   defp to_es(term) when is_binary(term) do
     %{
@@ -62,6 +63,7 @@ defmodule Pleroma.Search.Elasticsearch do
         |> Map.get("hits", [])
         |> Enum.map(fn result -> result["_id"] end)
         |> Pleroma.Activity.all_by_ids_with_object()
+       |> Enum.filter(fn x -> Visibility.visible_for_user?(x, user) end)
 
       %{
         "accounts" => [],