forked from AkkomaGang/akkoma
Migrations: Add a migration to backfill notification types.
This commit is contained in:
parent
38dce485c4
commit
6cd2fa2a4c
2 changed files with 29 additions and 4 deletions
|
@ -49,7 +49,7 @@ def fill_in_notification_types() do
|
|||
|> Enum.each(fn notification ->
|
||||
type =
|
||||
notification.activity
|
||||
|> type_from_activity()
|
||||
|> type_from_activity(no_cachex: true)
|
||||
|
||||
notification
|
||||
|> changeset(%{type: type})
|
||||
|
@ -364,10 +364,23 @@ defp do_create_notifications(%Activity{} = activity) do
|
|||
{:ok, notifications}
|
||||
end
|
||||
|
||||
defp type_from_activity(%{data: %{"type" => type}} = activity) do
|
||||
defp type_from_activity(%{data: %{"type" => type}} = activity, opts \\ []) do
|
||||
case type do
|
||||
"Follow" ->
|
||||
if Activity.follow_accepted?(activity) do
|
||||
accepted_function =
|
||||
if Keyword.get(opts, :no_cachex, false) do
|
||||
# A special function to make this usable in a migration.
|
||||
fn activity ->
|
||||
with %User{} = follower <- User.get_by_ap_id(activity.data["actor"]),
|
||||
%User{} = followed <- User.get_by_ap_id(activity.data["object"]) do
|
||||
Pleroma.FollowingRelationship.following?(follower, followed)
|
||||
end
|
||||
end
|
||||
else
|
||||
&Activity.follow_accepted?/1
|
||||
end
|
||||
|
||||
if accepted_function.(activity) do
|
||||
"follow"
|
||||
else
|
||||
"follow_request"
|
||||
|
@ -394,8 +407,10 @@ defp type_from_activity(%{data: %{"type" => type}} = activity) do
|
|||
end
|
||||
end
|
||||
|
||||
defp type_from_activity_object(%{data: %{"type" => "Create", "object" => %{}}}), do: "mention"
|
||||
|
||||
defp type_from_activity_object(%{data: %{"type" => "Create"}} = activity) do
|
||||
object = Object.normalize(activity, false)
|
||||
object = Object.get_by_ap_id(activity.data["object"])
|
||||
|
||||
case object.data["type"] do
|
||||
"ChatMessage" -> "pleroma:chat_mention"
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
defmodule Pleroma.Repo.Migrations.BackfillNotificationTypes do
|
||||
use Ecto.Migration
|
||||
|
||||
def up do
|
||||
Pleroma.Notification.fill_in_notification_types()
|
||||
end
|
||||
|
||||
def down do
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue