Got usernames working, for now, I think.
This commit is contained in:
parent
2a288e2507
commit
ffa6d3bc55
@ -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
|
||||
|
||||
@ -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,7 +45,8 @@ 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);
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -25,7 +25,11 @@
|
||||
<div id="top-bar-username" class='uk-flex uk-flex-row uk-flex-center uk-margin-small-top'>
|
||||
<b>You are: </b>
|
||||
<a style='width:100px;' href="javascript:show_login_box()">
|
||||
<%= @player.username %>
|
||||
<%= if @current_player do %>
|
||||
<%=show_username(@current_player)%>
|
||||
<% else %>
|
||||
Nobody
|
||||
<% end %>
|
||||
</a>
|
||||
<input id="top-bar-login-box"/>
|
||||
</div>
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
<%= text_input f, :username, "placeholder": "Join the game as..." %>
|
||||
<%= error_tag f, :username %>
|
||||
</div>
|
||||
<div>
|
||||
<%= text_input f, :picture, class: "uk-hidden" %>
|
||||
</div>
|
||||
<div class="controls uk-margin-top">
|
||||
<div class="uk-flex uk-flex-center">
|
||||
<ul class="uk-subnav uk-subnav-pill" style="margin-bottom:0px;">
|
||||
|
||||
@ -1,3 +1,25 @@
|
||||
defmodule BwcWeb.LayoutView do
|
||||
use BwcWeb, :view
|
||||
|
||||
def show_username(%Ecto.Changeset{} = player) do
|
||||
cond do
|
||||
player.valid? ->
|
||||
player.username
|
||||
true ->
|
||||
Nobody
|
||||
end
|
||||
end
|
||||
|
||||
def show_username(%Bwc.Player{} = player) do
|
||||
player.username
|
||||
end
|
||||
|
||||
def show_username("Nobody" = player) do
|
||||
"Nobody"
|
||||
end
|
||||
|
||||
def show_username(nil = player) do
|
||||
"Nobody"
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Loading…
Reference in New Issue
Block a user