Add initial implementatin of client /sync endpoint without 'since'

parameter
This commit is contained in:
Pim Kunis 2021-09-07 20:24:06 +02:00
parent 5f0fd7fabe
commit 7a1bf01869
7 changed files with 121 additions and 12 deletions

View file

@ -4,8 +4,8 @@ defmodule Architex.Event.Formatters do
"""
alias Architex.Event
@spec for_client(Event.t()) :: map()
def for_client(%Event{
@spec messages_response(Event.t()) :: map()
def messages_response(%Event{
content: content,
type: type,
id: event_id,
@ -30,6 +30,27 @@ defmodule Architex.Event.Formatters do
data
end
def sync_response(%Event{
content: content,
type: type,
id: event_id,
sender: sender,
origin_server_ts: origin_server_ts,
unsigned: unsigned
}) do
data = %{
content: content,
type: type,
event_id: event_id,
sender: to_string(sender),
origin_server_ts: origin_server_ts
}
data = if unsigned, do: Map.put(data, :unsigned, unsigned), else: data
data
end
@spec as_pdu(Event.t()) :: map()
def as_pdu(%Event{
auth_events: auth_events,

View file

@ -70,8 +70,6 @@ defmodule Architex.Room do
@spec get_messages(Room.t(), Messages.t()) :: {[Event.t()], integer() | nil, integer() | nil}
def get_messages(room, %Messages{from: from, to: to, dir: dir, limit: limit}) do
limit = limit || 10
events =
room
|> Ecto.assoc(:events)
@ -90,6 +88,8 @@ defmodule Architex.Room do
# When 'from' is empty, we return events from the start or end
# of the room's history.
# TODO: Might actually not be needed, could be that Quaternion is passing
# an empty string because the /sync call fails.
@spec events_from(Ecto.Query.t(), String.t(), String.t()) :: Ecto.Query.t()
defp events_from(query, "", _), do: query