ソースを参照

question_validator: fix for mastodon poll expiration

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)
note-update
Haelwenn (lanodan) Monnier 4年前
コミット
173f69c854
この署名に対応する既知のキーがデータベースに存在しません GPGキーID: D5B7A8E43C997DEE
3個のファイルの変更16行の追加9行の削除
  1. +10
    -0
      lib/pleroma/web/activity_pub/object_validators/question_validator.ex
  2. +6
    -8
      lib/pleroma/web/mastodon_api/views/poll_view.ex
  3. +0
    -1
      test/fixtures/mastodon-question-activity.json

+ 10
- 0
lib/pleroma/web/activity_pub/object_validators/question_validator.ex ファイルの表示

@@ -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)


+ 6
- 8
lib/pleroma/web/mastodon_api/views/poll_view.ex ファイルの表示

@@ -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



+ 0
- 1
test/fixtures/mastodon-question-activity.json ファイルの表示

@@ -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": {


読み込み中…
キャンセル
保存