question_validator: fix for mastodon poll expiration
authorHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Mon, 15 Jun 2020 03:18:30 +0000 (05:18 +0200)
committerHaelwenn (lanodan) Monnier <contact@hacktivis.me>
Wed, 15 Jul 2020 09:39:56 +0000 (11:39 +0200)
Mastodon activities do not have a "closed" field, this could be seen on
https://pouet.it/users/lanodan_tmp/statuses/104345126997708380
which runs Mastodon 3.1.4 (SDF runs 3.1.2)

lib/pleroma/web/activity_pub/object_validators/question_validator.ex
lib/pleroma/web/mastodon_api/views/poll_view.ex
test/fixtures/mastodon-question-activity.json

index f94d7935242ce2295fcb36b31d11257933022ae8..605cb56f85e84bf5e68a976806806d07ff5474f4 100644 (file)
@@ -71,7 +71,17 @@ defmodule Pleroma.Web.ActivityPub.ObjectValidators.QuestionValidator do
     |> changeset(data)
   end
 
+  def fix(data) do
+    cond do
+      is_binary(data["closed"]) -> data
+      is_binary(data["endTime"]) -> Map.put(data, "closed", data["endTime"])
+      true -> Map.drop(data, ["closed"])
+    end
+  end
+
   def changeset(struct, data) do
+    data = fix(data)
+
     struct
     |> cast(data, __schema__(:fields) -- [:anyOf, :oneOf])
     |> cast_embed(:anyOf)
index 73c990e2ea2800e5ca5c1949273c4c8bd4076eb8..ce595ae8a8825ba0684c64b9cba800932cb17491 100644 (file)
@@ -40,15 +40,13 @@ defmodule Pleroma.Web.MastodonAPI.PollView do
   end
 
   defp end_time_and_expired(object) do
-    case object.data["closed"] || object.data["endTime"] do
-      end_time when is_binary(end_time) ->
-        end_time = NaiveDateTime.from_iso8601!(end_time)
-        expired = NaiveDateTime.compare(end_time, NaiveDateTime.utc_now()) == :lt
+    if object.data["closed"] do
+      end_time = NaiveDateTime.from_iso8601!(object.data["closed"])
+      expired = NaiveDateTime.compare(end_time, NaiveDateTime.utc_now()) == :lt
 
-        {Utils.to_masto_date(end_time), expired}
-
-      _ ->
-        {nil, false}
+      {Utils.to_masto_date(end_time), expired}
+    else
+      {nil, false}
     end
   end
 
index ac329c7d5f4754b6dade73272ac5b56898ebcec9..3648b9f90bd44d60b410ce6657c09f3640c92e04 100644 (file)
@@ -49,7 +49,6 @@
       "en": "<p>Why is Tenshi eating a corndog so cute?</p>"
     },
     "endTime": "2019-05-11T09:03:36Z",
-    "closed": "2019-05-11T09:03:36Z",
     "attachment": [],
     "tag": [],
     "replies": {