defmodule Web.AdminLoginLive do
  @moduledoc false
  use Web, :live_view

  @impl true
  def mount(params, _session, socket) do
    socket =
      assign(
        socket,
        form: to_form(%{"password" => "", "return_to" => params["return_to"]}),
        return_to: params["return_to"]
      )

    {:ok, socket, layout: false}
  end

  @impl true
  def render(assigns) do
    ~H"""
    <main class="flex flex-col w-screen h-screen fixed justify-center items-center">
      <.form for={@form} action={~p"/admin/session/create"} class="flex flex-col gap-y-2">
        <.input type="hidden" field={@form[:return_to]} />
        <.input type="password" placeholder="password" field={@form[:password]} required />
        <div class="flex flex-col items-end">
          <button type="submit" class="font-bold hover:underline">sign in</button>
          <.a href={cancel_href(@return_to)}>
            cancel
          </.a>
        </div>
      </.form>
    </main>
    """
  end

  defp cancel_href("/admin"), do: ~p"/"
  defp cancel_href("/admin/" <> _), do: ~p"/"
  defp cancel_href(nil), do: ~p"/"
  defp cancel_href(return_to), do: return_to
end