diff --git a/apps/bwc/lib/bwc.ex b/apps/bwc/lib/bwc.ex index 47c5f29..ac09610 100644 --- a/apps/bwc/lib/bwc.ex +++ b/apps/bwc/lib/bwc.ex @@ -11,12 +11,23 @@ defmodule Bwc do def create_player(attrs), do: Player.changeset(%Player{}, attrs) |> @repo.insert() - def delete_player(id), do: get_player(id) |> @repo.delete + def delete_player(nil), do: {:error, "Player does not exist"} + def delete_player(%Player{} = player), do: player |> @repo.delete - def list_players, do: @repo.all(Player) + + def reset, do: Bwc.list_players |> Enum.each(fn(p) -> Bwc.delete_player(p) end) + + def change_name({old_username, new_username}) do + {:ok, old_player} = old_username |> Bwc.get_or_create_player + old_player |> Player.changeset(%{username: new_username}) |> @repo.update() + end + + def list_players, do: @repo.all(Player) |> Enum.filter(fn(p) -> p.username != "Nobody" end) def get_player(id), do: @repo.get!(Player, id) + def get_player_by_username(username), do: get_player_by(%{username: username}) + def get_player_by(params), do: @repo.get_by(Player, params) def get_or_create_player(username) do diff --git a/apps/bwc_web/assets/js/bwc.js b/apps/bwc_web/assets/js/bwc.js index f1f9048..30f9291 100644 --- a/apps/bwc_web/assets/js/bwc.js +++ b/apps/bwc_web/assets/js/bwc.js @@ -7,7 +7,7 @@ window.UIkit = UIkit; window.show_login_box = () => { $("#top-bar-username a").hide(); - $("#top-bar-login-box").show().focus(); + $("#top-bar-login-box").val($("#top-bar-username a").text().trim()).show().focus(); } @@ -37,7 +37,7 @@ $("#top-bar-login-box").keyup(function(e) { window.login = () => { var CSRF_TOKEN = $("input[name=_csrf_token]").val(); - var username = $("#top-bar-login-box").val(); + var username = $("#top-bar-login-box").val().trim(); $.ajax({ url: "/api/join", method: 'POST', @@ -45,13 +45,14 @@ window.login = () => { xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN); }, data: { - username: username + username: username, + old_username: $("#top-bar-username a").text().trim() } }).done(function(response) { console.log(response); UIkit.notification(response['data']); hide_login_box(); - $("#top-bar-username a").text(response['username']); + $("#top-bar-username a").text(response['username']); }); } diff --git a/apps/bwc_web/lib/bwc_web/controllers/session_controller.ex b/apps/bwc_web/lib/bwc_web/controllers/session_controller.ex index fcff91b..a08b828 100644 --- a/apps/bwc_web/lib/bwc_web/controllers/session_controller.ex +++ b/apps/bwc_web/lib/bwc_web/controllers/session_controller.ex @@ -8,8 +8,9 @@ defmodule BwcWeb.SessionController do def set_name(conn, params) do import Logger - - case Map.get(params, "username") |> Bwc.get_or_create_player() do + new_username = Map.get(params, "username") + old_username = Map.get(params, "old_username") + case {old_username, new_username} |> Bwc.change_name() do {:ok, player} -> conn |> put_session(:username, player.username) |> render("set_name.json", username: player.username) diff --git a/apps/bwc_web/lib/bwc_web/roster.ex b/apps/bwc_web/lib/bwc_web/roster.ex index 6784c6f..7971406 100644 --- a/apps/bwc_web/lib/bwc_web/roster.ex +++ b/apps/bwc_web/lib/bwc_web/roster.ex @@ -4,14 +4,16 @@ defmodule BwcWeb.Roster do def init(opts), do: opts def call(conn, _opts) do + import Logger + player = conn |> get_session(:username) |> case do - nil -> Bwc.new_player() + nil -> "Nobody" username -> Bwc.get_player_by(%{username: username}) end - - assign(conn, :player, player) + Logger.debug(player) + assign(conn, :current_player, player) end end diff --git a/apps/bwc_web/lib/bwc_web/templates/layout/app.html.eex b/apps/bwc_web/lib/bwc_web/templates/layout/app.html.eex index 49791a5..ce8bb3f 100644 --- a/apps/bwc_web/lib/bwc_web/templates/layout/app.html.eex +++ b/apps/bwc_web/lib/bwc_web/templates/layout/app.html.eex @@ -25,7 +25,11 @@
You are:  - <%= @player.username %> + <%= if @current_player do %> + <%=show_username(@current_player)%> + <% else %> + Nobody + <% end %>
diff --git a/apps/bwc_web/lib/bwc_web/templates/session/new.html.eex b/apps/bwc_web/lib/bwc_web/templates/session/new.html.eex index deb7e15..9db8e0f 100644 --- a/apps/bwc_web/lib/bwc_web/templates/session/new.html.eex +++ b/apps/bwc_web/lib/bwc_web/templates/session/new.html.eex @@ -5,6 +5,9 @@ <%= text_input f, :username, "placeholder": "Join the game as..." %> <%= error_tag f, :username %> +
+ <%= text_input f, :picture, class: "uk-hidden" %> +