Clone
page_controller.ex
defmodule PiDayWeb.PageController do
  use PiDayWeb, :controller

  alias PiDay.Game
  alias PiDay.Game.Player

  def home(conn, _params) do
    # If player already has a session, redirect to play
    token = get_session(conn, :player_token)

    if token && Game.get_player_by_token(token) do
      redirect(conn, to: ~p"/play")
    else
      render(conn, :home, avatars: Player.avatars())
    end
  end

  def join(conn, %{"player" => player_params}) do
    case Game.create_player(player_params) do
      {:ok, player} ->
        conn
        |> put_session(:player_token, player.session_token)
        |> redirect(to: ~p"/play")

      {:error, _changeset} ->
        conn
        |> put_flash(:error, "Could not join. Pick a name and avatar!")
        |> redirect(to: ~p"/")
    end
  end
end