X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Factivity_pub%2Fmrf%2Fensure_re_prepended.ex;h=6fa48454aaa9502271365ce33770a88af788341c;hb=0554d91dcdc4263594ca02d4796c59bda49de3ce;hp=3f216010e570cfd1d92b3a2bc52b7dd85bb34f0c;hpb=8a1df182cf836eafc2558be32cf58ad07839f46a;p=akkoma diff --git a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex index 3f216010e..6fa48454a 100644 --- a/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex +++ b/lib/pleroma/web/activity_pub/mrf/ensure_re_prepended.ex @@ -1,30 +1,33 @@ defmodule Pleroma.Web.ActivityPub.MRF.EnsureRePrepended do - alias Pleroma.Activity + alias Pleroma.Object @behaviour Pleroma.Web.ActivityPub.MRF + @reply_prefix Regex.compile!("^re:[[:space:]]*", [:caseless]) def filter_by_summary( - %{"summary" => parent_summary} = parent, + %{"summary" => parent_summary} = _parent, %{"summary" => child_summary} = child ) - when not is_nil(child_summary) and child_summary == parent_summary and - byte_size(child_summary) > 1 do - if not String.starts_with?(child_summary, "re:") do + when not is_nil(child_summary) and byte_size(child_summary) > 0 and + not is_nil(parent_summary) and byte_size(parent_summary) > 0 do + if (child_summary == parent_summary and not Regex.match?(@reply_prefix, child_summary)) or + (Regex.match?(@reply_prefix, parent_summary) && + Regex.replace(@reply_prefix, parent_summary, "") == child_summary) do Map.put(child, "summary", "re: " <> child_summary) else child end end - def filter_by_summary(parent, child), do: child + def filter_by_summary(_parent, child), do: child def filter(%{"type" => activity_type} = object) when activity_type == "Create" do child = object["object"] - in_reply_to = Activity.get_create_activity_by_object_ap_id(child["inReplyTo"]) + in_reply_to = Object.normalize(child["inReplyTo"]) child = if(in_reply_to, - do: filter_by_summary(in_reply_to.data["object"], child), + do: filter_by_summary(in_reply_to.data, child), else: child )