forked from AkkomaGang/akkoma
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)
This commit is contained in:
parent
47ba796f41
commit
173f69c854
3 changed files with 16 additions and 9 deletions
|
@ -71,7 +71,17 @@ def cast_data(data) 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)
|
||||
|
|
|
@ -40,15 +40,13 @@ def render("show.json", %{object: object} = params) 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
|
||||
|
||||
|
|
|
@ -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": {
|
||||
|
|
Loading…
Reference in a new issue