Put avatar_url and displayname on m.room.member events
This commit is contained in:
parent
064a398a37
commit
739c496ac6
9 changed files with 193 additions and 70 deletions
|
@ -1,14 +1,16 @@
|
|||
defmodule ArchitexWeb.Client.Request.Ban do
|
||||
use ArchitexWeb.APIRequest
|
||||
|
||||
alias Architex.Types.UserId
|
||||
|
||||
@type t :: %__MODULE__{
|
||||
user_id: String.t(),
|
||||
user_id: UserId.t(),
|
||||
reason: String.t() | nil
|
||||
}
|
||||
|
||||
@primary_key false
|
||||
embedded_schema do
|
||||
field :user_id, :string
|
||||
field :user_id, UserId
|
||||
field :reason, :string
|
||||
end
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
defmodule ArchitexWeb.Client.Request.CreateRoom do
|
||||
use ArchitexWeb.APIRequest
|
||||
|
||||
alias Architex.Types.UserId
|
||||
|
||||
defmodule PowerLevelContentOverride do
|
||||
use Ecto.Schema
|
||||
|
||||
|
@ -97,7 +99,7 @@ defmodule ArchitexWeb.Client.Request.CreateRoom do
|
|||
room_alias_name: String.t() | nil,
|
||||
name: String.t() | nil,
|
||||
topic: String.t() | nil,
|
||||
invite: list(String.t()) | nil,
|
||||
invite: [UserId.t()] | nil,
|
||||
room_version: String.t() | nil,
|
||||
preset: String.t() | nil,
|
||||
is_direct: boolean() | nil,
|
||||
|
@ -113,7 +115,7 @@ defmodule ArchitexWeb.Client.Request.CreateRoom do
|
|||
field :room_alias_name, :string
|
||||
field :name, :string
|
||||
field :topic, :string
|
||||
field :invite, {:array, :string}
|
||||
field :invite, {:array, UserId}
|
||||
field :room_version, :string
|
||||
field :preset, :string
|
||||
field :is_direct, :boolean
|
||||
|
|
|
@ -1,14 +1,16 @@
|
|||
defmodule ArchitexWeb.Client.Request.Kick do
|
||||
use ArchitexWeb.APIRequest
|
||||
|
||||
alias Architex.Types.UserId
|
||||
|
||||
@type t :: %__MODULE__{
|
||||
user_id: String.t(),
|
||||
user_id: UserId.t(),
|
||||
reason: String.t() | nil
|
||||
}
|
||||
|
||||
@primary_key false
|
||||
embedded_schema do
|
||||
field :user_id, :string
|
||||
field :user_id, UserId
|
||||
field :reason, :string
|
||||
end
|
||||
|
||||
|
|
|
@ -63,9 +63,11 @@ defmodule ArchitexWeb.Client.RoomController do
|
|||
"room_id" => room_id,
|
||||
"user_id" => user_id
|
||||
}) do
|
||||
with {:ok, _} <- UserId.cast(user_id),
|
||||
with {:ok, user_id_struct} <- UserId.cast(user_id),
|
||||
{:ok, pid} <- RoomServer.get_room_server(room_id) do
|
||||
case RoomServer.invite(pid, account, user_id) do
|
||||
{avatar_url, displayname} = UserId.try_get_user_information(user_id_struct)
|
||||
|
||||
case RoomServer.invite(pid, account, user_id, avatar_url, displayname) do
|
||||
:ok ->
|
||||
conn
|
||||
|> send_resp(200, [])
|
||||
|
@ -135,9 +137,11 @@ defmodule ArchitexWeb.Client.RoomController do
|
|||
Action for POST /_matrix/client/r0/rooms/{roomId}/kick.
|
||||
"""
|
||||
def kick(%Conn{assigns: %{account: account}} = conn, %{"room_id" => room_id} = params) do
|
||||
with {:ok, request} <- Kick.parse(params),
|
||||
with {:ok, %Kick{user_id: user_id} = request} <- Kick.parse(params),
|
||||
{:ok, pid} <- RoomServer.get_room_server(room_id) do
|
||||
case RoomServer.kick(pid, account, request) do
|
||||
{avatar_url, displayname} = UserId.try_get_user_information(user_id)
|
||||
|
||||
case RoomServer.kick(pid, account, request, avatar_url, displayname) do
|
||||
:ok ->
|
||||
conn
|
||||
|> send_resp(200, [])
|
||||
|
@ -158,9 +162,11 @@ defmodule ArchitexWeb.Client.RoomController do
|
|||
Action for POST /_matrix/client/r0/rooms/{roomId}/ban.
|
||||
"""
|
||||
def ban(%Conn{assigns: %{account: account}} = conn, %{"room_id" => room_id} = params) do
|
||||
with {:ok, request} <- Ban.parse(params),
|
||||
with {:ok, %Ban{user_id: user_id} = request} <- Ban.parse(params),
|
||||
{:ok, pid} <- RoomServer.get_room_server(room_id) do
|
||||
case RoomServer.ban(pid, account, request) do
|
||||
{avatar_url, displayname} = UserId.try_get_user_information(user_id)
|
||||
|
||||
case RoomServer.ban(pid, account, request, avatar_url, displayname) do
|
||||
:ok ->
|
||||
conn
|
||||
|> send_resp(200, [])
|
||||
|
@ -184,20 +190,22 @@ defmodule ArchitexWeb.Client.RoomController do
|
|||
"room_id" => room_id,
|
||||
"user_id" => user_id
|
||||
}) do
|
||||
case RoomServer.get_room_server(room_id) do
|
||||
{:ok, pid} ->
|
||||
case RoomServer.unban(pid, account, user_id) do
|
||||
:ok ->
|
||||
conn
|
||||
|> send_resp(200, [])
|
||||
|> halt()
|
||||
with {:ok, user_id_struct} <- UserId.cast(user_id),
|
||||
{:ok, pid} <- RoomServer.get_room_server(room_id) do
|
||||
{avatar_url, displayname} = UserId.try_get_user_information(user_id_struct)
|
||||
|
||||
{:error, _} ->
|
||||
put_error(conn, :unknown)
|
||||
end
|
||||
case RoomServer.unban(pid, account, user_id, avatar_url, displayname) do
|
||||
:ok ->
|
||||
conn
|
||||
|> send_resp(200, [])
|
||||
|> halt()
|
||||
|
||||
{:error, :not_found} ->
|
||||
put_error(conn, :not_found, "The given room was not found.")
|
||||
{:error, _} ->
|
||||
put_error(conn, :unknown)
|
||||
end
|
||||
else
|
||||
:error -> put_error(conn, :invalid_param, "Given user ID is invalid.")
|
||||
{:error, :not_found} -> put_error(conn, :not_found, "The given room was not found.")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -33,6 +33,8 @@ defmodule ArchitexWeb.Federation.HTTPClient do
|
|||
"""
|
||||
@spec client(String.t()) :: Tesla.Client.t()
|
||||
def client(server_name) do
|
||||
# TODO: When implementing resolving homeservers, probably create
|
||||
# a homeserver struct instead of using domain names directly.
|
||||
Tesla.client(
|
||||
[
|
||||
{Tesla.Middleware.Opts, [server_name: server_name]},
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue