Attach actor to pictures entity

This commit is contained in:
Thomas Citharel
2019-05-31 17:58:03 +02:00
parent 0a1f955194
commit 5b3831b4bf
15 changed files with 645 additions and 785 deletions

View File

@@ -4,6 +4,7 @@ defmodule MobilizonWeb.Resolvers.Picture do
"""
alias Mobilizon.Media
alias Mobilizon.Media.Picture
alias Mobilizon.Users.User
@doc """
Get picture for an event's pic
@@ -43,16 +44,21 @@ defmodule MobilizonWeb.Resolvers.Picture do
end
@spec upload_picture(map(), map(), map()) :: {:ok, Picture.t()} | {:error, any()}
def upload_picture(_parent, %{file: %Plug.Upload{} = file} = args, %{
def upload_picture(_parent, %{file: %Plug.Upload{} = file, actor_id: actor_id} = args, %{
context: %{
current_user: _user
current_user: user
}
}) do
with {:ok, %{"url" => [%{"href" => url}]}} <- MobilizonWeb.Upload.store(file),
with {:is_owned, true, _actor} <- User.owns_actor(user, actor_id),
{:ok, %{"url" => [%{"href" => url}]}} <- MobilizonWeb.Upload.store(file),
args <- Map.put(args, :url, url),
{:ok, picture = %Picture{}} <- Media.create_picture(%{"file" => args}) do
{:ok, picture = %Picture{}} <-
Media.create_picture(%{"file" => args, "actor_id" => actor_id}) do
{:ok, %{name: picture.file.name, url: picture.file.url, id: picture.id}}
else
{:is_owned, false} ->
{:error, "Actor id is not owned by authenticated user"}
err ->
{:error, err}
end

View File

@@ -31,7 +31,7 @@ defmodule MobilizonWeb.Router do
end
pipeline :browser do
plug(Plug.Static, at: "/", from: "priv/static")
plug(Plug.Static, at: "/", from: "priv/static/js")
plug(:accepts, ["html"])
plug(:fetch_session)
plug(:fetch_flash)

View File

@@ -26,6 +26,7 @@ defmodule MobilizonWeb.Schema.PictureType do
field(:name, non_null(:string))
field(:alt, :string)
field(:file, non_null(:upload))
field(:actor_id, :id)
end
object :picture_queries do
@@ -42,6 +43,7 @@ defmodule MobilizonWeb.Schema.PictureType do
arg(:name, non_null(:string))
arg(:alt, :string)
arg(:file, non_null(:upload))
arg(:actor_id, non_null(:id))
resolve(&Picture.upload_picture/3)
end
end