From 9adf4c5f64d3d347e9a5d182d6906cc18e8b43cf Mon Sep 17 00:00:00 2001 From: Jinkyou Son Date: Wed, 16 Apr 2025 15:19:48 +0900 Subject: [PATCH] Allow default uploader when using external uploaders in LiveView --- lib/phoenix_live_view/upload.ex | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/lib/phoenix_live_view/upload.ex b/lib/phoenix_live_view/upload.ex index fe37b9a301..3fe0ee9fbd 100644 --- a/lib/phoenix_live_view/upload.ex +++ b/lib/phoenix_live_view/upload.ex @@ -361,7 +361,7 @@ defmodule Phoenix.LiveView.Upload do channel_preflight(new_socket, new_conf, new_entries, cid, client_meta) func when is_function(func) -> - external_preflight(new_socket, new_conf, new_entries, client_meta) + external_preflight(new_socket, new_conf, new_entries, cid, client_meta) end end @@ -404,7 +404,13 @@ defmodule Phoenix.LiveView.Upload do for {ref, err} <- conf.errors, ref == entry.ref, do: err end - defp external_preflight(%Socket{} = socket, %UploadConfig{} = conf, entries, client_config_meta) do + defp external_preflight( + %Socket{} = socket, + %UploadConfig{} = conf, + entries, + cid, + client_config_meta + ) do reply_entries = Enum.reduce_while(entries, {:ok, %{}, %{}, socket}, fn entry, {:ok, metas, errors, acc} -> if conf.auto_upload? and not entry.valid? do @@ -417,6 +423,16 @@ defmodule Phoenix.LiveView.Upload do new_socket = update_upload_entry_meta(new_socket, conf.name, entry, meta) {:cont, {:ok, Map.put(metas, entry.ref, meta), errors, new_socket}} + {:ok, :default, new_socket} -> + token = + Phoenix.LiveView.Static.sign_token(socket.endpoint, %{ + pid: self(), + ref: {conf.ref, entry.ref}, + cid: cid + }) + + {:cont, {:ok, Map.put(metas, entry.ref, token), errors, new_socket}} + {:error, %{} = meta, new_socket} -> if conf.auto_upload? do new_errors = Map.put(errors, entry.ref, [meta])