Allow for varying name fields
[akkoma] / lib / pleroma / web / activity_pub / object_validators / tag_validator.ex
index 7510215851346810f3a86f1e33ae6ff1f7d39620..dd1bc53ed93a901df112d7f5cac46c4ca0e53444 100644 (file)
@@ -68,6 +68,53 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.TagValidator do
     |> validate_required([:type, :name, :icon])
   end
 
+  def changeset(struct, %{"type" => "Book"} = data) do
+    data =
+      if Map.has_key?(data, "title") do
+        Map.put(data, "name", data["title"])
+      else
+        data
+      end
+
+    struct
+    |> cast(data, [:type, :name])
+    |> validate_required([:type, :name])
+  end
+
+  def changeset(struct, %{"type" => "Edition"} = data) do
+    # Sometimes it's title, sometimes name
+    # Don't ask me.
+    data =
+      if Map.has_key?(data, "title") do
+        Map.put(data, "name", data["title"])
+      else
+        data
+      end
+
+    struct
+    |> cast(data, [:type, :name])
+    |> validate_required([:type, :name])
+  end
+
+  def changeset(struct, %{"type" => "Work"} = data) do
+    data =
+      if Map.has_key?(data, "title") do
+        Map.put(data, "name", data["title"])
+      else
+        data
+      end
+
+    struct
+    |> cast(data, [:type, :name])
+    |> validate_required([:type, :name])
+  end
+
+  def changeset(struct, %{"type" => "Author"} = data) do
+    struct
+    |> cast(data, [:type, :name])
+    |> validate_required([:type, :name])
+  end
+
   def icon_changeset(struct, data) do
     struct
     |> cast(data, [:type, :url])