Pipe the response of LiveView functions
Simply add reply to your list of dependencies in your mix.exs:
def deps do
[
{:reply, "~> 1.1"}
]
endand import it in your Web-Module lib/my_app_web.ex inside html_helpers
defp html_helpers do
quote do
# HTML escaping functionality
import Phoenix.HTML
+ import Reply
...Documentation can be found at https://hexdocs.pm/reply
You can now use ok/2, noreply/2 or reply/3 to pipe the response in mount and handle_* all the way down.
def mount(_params, _session, socket) do
socket
|> assign(:posts, Blog.list_posts())
|> ok()
end
def handle_params(%{"id" => id}, _, socket) do
socket
|> assign(:post, Blog.get_post!(id))
|> noreply()
endand if you want to reply with data, it works as well using reply/3
def handle_event("update", %{"id" => id}, socket) do
{:ok, post} = Blog.get_post!(id)
socket
|> assign(:post, post)
|> reply(%{last_update: post.updated_at})
end