Implement announcement read relationships

This commit is contained in:
Tusooa Zhu 2022-03-08 12:07:21 -05:00
commit 5169ad8f14
No known key found for this signature in database
GPG key ID: 7B467EDE43A08224
8 changed files with 316 additions and 3 deletions

View file

@ -7,6 +7,7 @@ defmodule Pleroma.Announcement do
import Ecto.Changeset, only: [cast: 3, validate_required: 2]
alias Pleroma.AnnouncementReadRelationship
alias Pleroma.Repo
@type t :: %__MODULE__{}
@ -49,15 +50,20 @@ defmodule Pleroma.Announcement do
end
end
def read_by?(_announcement, _user) do
false
def read_by?(announcement, user) do
AnnouncementReadRelationship.exists?(user, announcement)
end
def mark_read_by(announcement, user) do
AnnouncementReadRelationship.mark_read(user, announcement)
end
def render_json(announcement, opts \\ []) do
extra_params =
case Keyword.fetch(opts, :for) do
{:ok, user} ->
{:ok, user} when not is_nil(user) ->
%{read: read_by?(announcement, user)}
_ ->
%{}
end