diff --git a/lib/graphql/api/events.ex b/lib/graphql/api/events.ex index a67787661..78bf77364 100644 --- a/lib/graphql/api/events.ex +++ b/lib/graphql/api/events.ex @@ -57,15 +57,25 @@ defmodule Mobilizon.GraphQL.API.Events do defp process_picture(%{media_id: _picture_id} = args, _), do: args defp process_picture(%{media: media}, %Actor{id: actor_id}) do - with uploaded when is_map(uploaded) <- - media - |> Map.get(:file) - |> Utils.make_media_data(description: Map.get(media, :name)) do + # case url + if Map.has_key?(media, :url) do %{ - file: Map.take(uploaded, [:url, :name, :content_type, :size]), - metadata: Map.take(uploaded, [:width, :height, :blurhash]), + file: %{"url" => media.url, "name" => media.name}, actor_id: actor_id } + + # case upload + else + with uploaded when is_map(uploaded) <- + media + |> Map.get(:file) + |> Utils.make_media_data(description: Map.get(media, :name)) do + %{ + file: Map.take(uploaded, [:url, :name, :content_type, :size]), + metadata: Map.take(uploaded, [:width, :height, :blurhash]), + actor_id: actor_id + } + end end end diff --git a/lib/graphql/schema/media.ex b/lib/graphql/schema/media.ex index 7e77b9fcb..8514ee406 100644 --- a/lib/graphql/schema/media.ex +++ b/lib/graphql/schema/media.ex @@ -52,8 +52,9 @@ defmodule Mobilizon.GraphQL.Schema.MediaType do input_object :media_input_object do field(:name, non_null(:string), description: "The media's name") field(:alt, :string, description: "The media's alternative text") - field(:file, non_null(:upload), description: "The media file") + field(:file, :upload, description: "The media file") field(:actor_id, :id, description: "The media owner") + field(:url, :string, description: "The media URL") end object :media_queries do