defmodule SomethingErlangWeb.ThreadLive do use SomethingErlangWeb, :live_view alias SomethingErlang.Grover def render(%{thread: _} = assigns) do ~H"""

<%= raw(@thread.title) %>

<.pagination thread={@thread} /> <%= for %{userinfo: author, postdate: date, postbody: article} <- @thread.posts do %> <.post author={author} date={date}> <%= raw(article) %> <% end %> <.pagination thread={@thread} />
""" end def render(assigns) do ~H"""

Threads!

      <%= inspect(@current_user) %>
    
""" end def post(assigns) do ~H"""
<.user info={@author} />
<%= render_slot(@inner_block) %>
<.toolbar date={@date} />
""" end def user(assigns) do ~H""" """ end def toolbar(assigns) do ~H"""
<%= @date |> Calendar.strftime("%A, %b %d %Y @ %H:%M") %>
""" end def pagination(assigns) do ~H""" """ end defp label_button(%{label: "«", page: page} = assigns), do: ~H""" <%= page %> """ defp label_button(%{label: "‹", page: page} = assigns), do: ~H""" <%= page %> """ defp label_button(%{label: "›", page: page} = assigns), do: ~H""" <%= page %> """ defp label_button(%{label: "»", page: page} = assigns), do: ~H""" <%= page %> """ defp label_button(%{page: page} = assigns), do: ~H""" <%= page %> """ defp buttons(thread) do %{page: page_number, page_count: page_count} = thread first_page_disabled_button = if page_number == 1, do: " btn-disabled", else: "" last_page_disabled_button = if page_number == page_count, do: " btn-disabled", else: "" active_page_button = " btn-active" prev_button_target = if page_number > 1, do: page_number - 1, else: 1 next_button_target = if page_number < page_count, do: page_number + 1, else: page_count [ %{label: "«", page: 1, special: "" <> first_page_disabled_button}, %{label: "‹", page: prev_button_target, special: "" <> first_page_disabled_button}, %{label: "#{page_number}", page: page_number, special: active_page_button}, %{label: "›", page: next_button_target, special: "" <> last_page_disabled_button}, %{label: "»", page: page_count, special: "" <> last_page_disabled_button} ] end def mount(_params, session, socket) do user = socket.assigns.current_user |> Map.put(:bbpassword, session["bbpassword"]) Grover.mount(user) {:ok, socket} end def handle_params(%{"id" => id, "page" => page}, _, socket) do thread = Grover.get_thread!(id, page |> String.to_integer()) {:noreply, socket |> assign(:page_title, thread.title) |> assign(:thread, thread)} end def handle_params(%{"id" => id}, _, socket) do params = %{page: 1} {:noreply, push_patch( socket, to: ~p"/thread/#{id}?#{params}", replace: true )} end def handle_params(%{}, _, socket) do {:noreply, socket} end end