defmodule PostlandWeb.TimelineLive do use PostlandWeb, :live_view def render(assigns) do ~H""" <.post_form post_content={@post} />
<.post_card post={post} />
""" end def mount(_params, _session, socket) do {:ok, socket |> assign(:post, "") |> stream(:posts, Postland.Timeline.timeline())} end def handle_event("create_post", %{"post" => post}, socket) do {:ok, results} = Postland.Activities.record_markdown_post(post) new_posts = results |> Enum.filter(fn {_key, value} -> is_struct(value, Postland.Object) end) socket = socket |> assign(:post, "") |> then(fn socket -> Enum.reduce(new_posts, socket, fn {_id, post}, socket -> stream_insert(socket, :posts, post, at: 0) end) end) {:noreply, socket} end def handle_event("change_post", %{"post" => post}, socket) do {:noreply, socket |> assign(:post, post)} end end