philomena/lib/philomena_web/views/conversation_view.ex
2024-06-06 22:28:35 +02:00

40 lines
1 KiB
Elixir

defmodule PhilomenaWeb.ConversationView do
use PhilomenaWeb, :view
def other_party(%{id: user_id}, %{to_id: user_id} = conversation),
do: conversation.from
def other_party(_user, conversation),
do: conversation.to
def read_by?(%{id: user_id}, %{to_id: user_id} = conversation),
do: conversation.to_read
def read_by?(%{id: user_id}, %{from_id: user_id} = conversation),
do: conversation.from_read
def read_by?(_user, _conversation),
do: false
def hidden_by?(%{id: user_id}, %{to_id: user_id} = conversation),
do: conversation.to_hidden
def hidden_by?(%{id: user_id}, %{from_id: user_id} = conversation),
do: conversation.from_hidden
def hidden_by?(_user, _conversation),
do: false
def conversation_class(user, conversation) do
case read_by?(user, conversation) do
false -> "warning"
_ -> nil
end
end
def last_message_path(conversation, count) do
page = trunc(Float.ceil(count / 25))
~p"/conversations/#{conversation}?#{[page: page]}"
end
end