Page MenuHomePhorge

No OneTemporary

Authored By
Unknown
Size
4 KB
Referenced Files
None
Subscribers
None
diff --git a/lib/pleroma/announcement.ex b/lib/pleroma/announcement.ex
index 8cf917c9d..968136d16 100644
--- a/lib/pleroma/announcement.ex
+++ b/lib/pleroma/announcement.ex
@@ -1,51 +1,83 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Announcement do
use Ecto.Schema
import Ecto.Changeset, only: [cast: 3, validate_required: 2]
alias Pleroma.Repo
@type t :: %__MODULE__{}
@primary_key {:id, FlakeId.Ecto.CompatType, autogenerate: true}
schema "announcements" do
field(:data, :map)
timestamps()
end
def change(struct, params \\ %{}) do
struct
|> cast(params, [:data])
|> validate_required([:data])
end
def add(params) do
changeset = change(%__MODULE__{}, params)
Repo.insert(changeset)
end
def list_all do
__MODULE__
|> Repo.all()
end
def get_by_id(id) do
Repo.get_by(__MODULE__, id: id)
end
def delete_by_id(id) do
with announcement when not is_nil(announcement) <- get_by_id(id),
{:ok, _} <- Repo.delete(announcement) do
:ok
else
_ ->
: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
diff --git a/lib/pleroma/web/admin_api/views/announcement_view.ex b/lib/pleroma/web/admin_api/views/announcement_view.ex
index 5ad9a454a..8fbdc338a 100644
--- a/lib/pleroma/web/admin_api/views/announcement_view.ex
+++ b/lib/pleroma/web/admin_api/views/announcement_view.ex
@@ -1,20 +1,15 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.AdminAPI.AnnouncementView do
use Pleroma.Web, :view
def render("index.json", %{announcements: announcements}) do
render_many(announcements, __MODULE__, "show.json")
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
diff --git a/lib/pleroma/web/api_spec/schemas/announcement.ex b/lib/pleroma/web/api_spec/schemas/announcement.ex
index 26f93c730..433437aac 100644
--- a/lib/pleroma/web/api_spec/schemas/announcement.ex
+++ b/lib/pleroma/web/api_spec/schemas/announcement.ex
@@ -1,22 +1,35 @@
# Pleroma: A lightweight social networking server
# Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.Schemas.Announcement do
alias OpenApiSpex.Schema
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
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

File Metadata

Mime Type
text/x-diff
Expires
Sat, Oct 31, 12:34 PM (17 h, 49 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
1801408
Default Alt Text
(4 KB)

Event Timeline