Fill properties of announcements from Mastodon API spec

This commit is contained in:
Tusooa Zhu 2022-03-08 09:35:35 -05:00
parent d7af67012f
commit c867d23250
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
3 changed files with 49 additions and 9 deletions

View file

@ -48,4 +48,36 @@ def delete_by_id(id) do
:error
end
end
def read_by?(_announcement, _user) do
false
end
def render_json(announcement, opts \\ []) do
extra_params =
case Keyword.fetch(opts, :for) do
{:ok, user} ->
%{read: read_by?(announcement, user)}
_ ->
%{}
end
base = %{
id: announcement.id,
content: announcement.data["content"],
starts_at: :null,
ends_at: :null,
all_day: false,
published_at: announcement.inserted_at,
updated_at: announcement.updated_at,
mentions: [],
statuses: [],
tags: [],
emojis: [],
reactions: []
}
base
|> Map.merge(extra_params)
end
end

View file

@ -10,11 +10,6 @@ def render("index.json", %{announcements: announcements}) do
end
def render("show.json", %{announcement: announcement}) do
%{
id: announcement.id,
content: announcement.data["content"],
published_at: announcement.inserted_at,
updated_at: announcement.updated_at
}
Pleroma.Announcement.render_json(announcement)
end
end

View file

@ -9,14 +9,27 @@ defmodule Pleroma.Web.ApiSpec.Schemas.Announcement do
require OpenApiSpex
OpenApiSpex.schema(%{
title: "Account",
description: "Response schema for an account",
title: "Announcement",
description: "Response schema for an announcement",
type: :object,
properties: %{
id: FlakeID,
content: %Schema{type: :string},
starts_at: %Schema{
oneOf: [%Schema{type: :null}, %Schema{type: :string, format: "date-time"}]
},
ends_at: %Schema{
oneOf: [%Schema{type: :null}, %Schema{type: :string, format: "date-time"}]
},
all_day: %Schema{type: :boolean},
published_at: %Schema{type: :string, format: "date-time"},
updated_at: %Schema{type: :string, format: "date-time"}
updated_at: %Schema{type: :string, format: "date-time"},
read: %Schema{type: :boolean},
mentions: %Schema{type: :array},
statuses: %Schema{type: :array},
tags: %Schema{type: :array},
emojis: %Schema{type: :array},
reactions: %Schema{type: :array}
}
})
end