defmodule CMSWeb.AdminLoginLive do
  @moduledoc false
  use CMSWeb, :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"
          id={@form[:return_to].id}
          name={@form[:return_to].name}
          value={@form[:return_to].value}
        />
        <input
          type="password"
          placeholder="password"
          id={@form[:password].id}
          name={@form[:password].name}
          value={@form[:password].value}
          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