ACTUALLY WORKING

This commit is contained in:
Ryan Pandya 2020-12-29 14:07:27 -08:00
parent ffa6d3bc55
commit 02cc1072c0
4 changed files with 40 additions and 7 deletions

View File

@ -1,9 +1,31 @@
defmodule BwcWeb.SessionController do defmodule BwcWeb.SessionController do
use BwcWeb, :controller use BwcWeb, :controller
def update(conn, params) do
cards = Bwc.list_cards()
player = Map.get(params, "player")
new_username = Map.get(player, "username")
old_username = Map.get(player, "old_username")
case {old_username, new_username} |> Bwc.change_name() do
{:ok, player} ->
conn
|> put_session(:username, player.username)
|> put_flash(:info, "You are now known as '#{player.username}'.")
|> redirect(to: Routes.card_path(conn, :index, cards))
{:error, player} ->
conn |> render("new.html", player: player, method: :update)
end
end
def new(conn, _params) do def new(conn, _params) do
player = Bwc.new_player() player = Bwc.new_player()
render(conn, "new.html", player: player) method = cond do
conn |> get_session(:username) == "Nobody" ->
:create
true ->
:update
end
render(conn, "new.html", player: player, method: method)
end end
def set_name(conn, params) do def set_name(conn, params) do

View File

@ -6,12 +6,12 @@ defmodule BwcWeb.Roster do
def call(conn, _opts) do def call(conn, _opts) do
import Logger import Logger
player = {:ok, player} =
conn conn
|> get_session(:username) |> get_session(:username)
|> case do |> case do
nil -> "Nobody" nil -> {:ok, "Nobody"}
username -> Bwc.get_player_by(%{username: username}) username -> Bwc.get_or_create_player(username)
end end
Logger.debug(player) Logger.debug(player)
assign(conn, :current_player, player) assign(conn, :current_player, player)

View File

@ -22,6 +22,8 @@ defmodule BwcWeb.Router do
get "/join", SessionController, :new get "/join", SessionController, :new
post "/join", SessionController, :create post "/join", SessionController, :create
post "/rename", SessionController, :update
put "/rename", SessionController, :update
get "/leave", SessionController, :delete get "/leave", SessionController, :delete
get "/create", CardController, :new get "/create", CardController, :new

View File

@ -1,8 +1,13 @@
<%= form_for @player, Routes.session_path(@conn, :create), fn(f) -> %> <%= form_for @player, Routes.session_path(@conn, @method), fn(f) -> %>
<div class="new-session uk-panel uk-panel-box uk-panel-box-secondary uk-padding uk-flex uk-flex-column"> <div class="new-session uk-panel uk-panel-box uk-panel-box-secondary uk-padding uk-flex uk-flex-column">
<div class="uk-flex-item"> <div class="uk-flex-item">
<%= text_input f, :username, "placeholder": "Join the game as..." %> <%= if @current_player do %>
<%= text_input f, :username, "placeholder": @current_player.username, "value": @current_player.username %>
<%= text_input f, :old_username, "value": @current_player.username, "class": "uk-hidden" %>
<% else %>
<%= text_input f, :username, "placeholder": "Join the game as..." %>
<% end %>
<%= error_tag f, :username %> <%= error_tag f, :username %>
</div> </div>
<div> <div>
@ -12,7 +17,11 @@
<div class="uk-flex uk-flex-center"> <div class="uk-flex uk-flex-center">
<ul class="uk-subnav uk-subnav-pill" style="margin-bottom:0px;"> <ul class="uk-subnav uk-subnav-pill" style="margin-bottom:0px;">
<li> <li>
<%= submit "Join", class: "uk-active uk-subnav-pill", id: "joinGame" %> <%= if @current_player do %>
<%= submit "Change Name", class: "uk-active uk-subnav-pill", id: "joinGame" %>
<% else %>
<%= submit "Join", class: "uk-active uk-subnav-pill", id: "joinGame" %>
<% end %>
</li> </li>
</ul> </ul>
</div> </div>