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 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(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_player_by(params), do: @repo.get_by(Player, params)
|
||||||
|
|
||||||
def get_or_create_player(username) do
|
def get_or_create_player(username) do
|
||||||
|
|||||||
@ -7,7 +7,7 @@ window.UIkit = UIkit;
|
|||||||
window.show_login_box = () => {
|
window.show_login_box = () => {
|
||||||
|
|
||||||
$("#top-bar-username a").hide();
|
$("#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 = () => {
|
window.login = () => {
|
||||||
var CSRF_TOKEN = $("input[name=_csrf_token]").val();
|
var CSRF_TOKEN = $("input[name=_csrf_token]").val();
|
||||||
var username = $("#top-bar-login-box").val();
|
var username = $("#top-bar-login-box").val().trim();
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/api/join",
|
url: "/api/join",
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
@ -45,13 +45,14 @@ window.login = () => {
|
|||||||
xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN);
|
xhr.setRequestHeader("X-CSRF-Token", CSRF_TOKEN);
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
username: username
|
username: username,
|
||||||
|
old_username: $("#top-bar-username a").text().trim()
|
||||||
}
|
}
|
||||||
}).done(function(response) {
|
}).done(function(response) {
|
||||||
console.log(response);
|
console.log(response);
|
||||||
UIkit.notification(response['data']);
|
UIkit.notification(response['data']);
|
||||||
hide_login_box();
|
hide_login_box();
|
||||||
$("#top-bar-username a").text(response['username']);
|
$("#top-bar-username a").text(response['username']);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -8,8 +8,9 @@ defmodule BwcWeb.SessionController do
|
|||||||
|
|
||||||
def set_name(conn, params) do
|
def set_name(conn, params) do
|
||||||
import Logger
|
import Logger
|
||||||
|
new_username = Map.get(params, "username")
|
||||||
case Map.get(params, "username") |> Bwc.get_or_create_player() do
|
old_username = Map.get(params, "old_username")
|
||||||
|
case {old_username, new_username} |> Bwc.change_name() do
|
||||||
{:ok, player} ->
|
{:ok, player} ->
|
||||||
conn |> put_session(:username, player.username) |> render("set_name.json", username: player.username)
|
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 init(opts), do: opts
|
||||||
|
|
||||||
def call(conn, _opts) do
|
def call(conn, _opts) do
|
||||||
|
import Logger
|
||||||
|
|
||||||
player =
|
player =
|
||||||
conn
|
conn
|
||||||
|> get_session(:username)
|
|> get_session(:username)
|
||||||
|> case do
|
|> case do
|
||||||
nil -> Bwc.new_player()
|
nil -> "Nobody"
|
||||||
username -> Bwc.get_player_by(%{username: username})
|
username -> Bwc.get_player_by(%{username: username})
|
||||||
end
|
end
|
||||||
|
Logger.debug(player)
|
||||||
assign(conn, :player, player)
|
assign(conn, :current_player, player)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -25,7 +25,11 @@
|
|||||||
<div id="top-bar-username" class='uk-flex uk-flex-row uk-flex-center uk-margin-small-top'>
|
<div id="top-bar-username" class='uk-flex uk-flex-row uk-flex-center uk-margin-small-top'>
|
||||||
<b>You are: </b>
|
<b>You are: </b>
|
||||||
<a style='width:100px;' href="javascript:show_login_box()">
|
<a style='width:100px;' href="javascript:show_login_box()">
|
||||||
<%= @player.username %>
|
<%= if @current_player do %>
|
||||||
|
<%=show_username(@current_player)%>
|
||||||
|
<% else %>
|
||||||
|
Nobody
|
||||||
|
<% end %>
|
||||||
</a>
|
</a>
|
||||||
<input id="top-bar-login-box"/>
|
<input id="top-bar-login-box"/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -5,6 +5,9 @@
|
|||||||
<%= text_input f, :username, "placeholder": "Join the game as..." %>
|
<%= text_input f, :username, "placeholder": "Join the game as..." %>
|
||||||
<%= error_tag f, :username %>
|
<%= error_tag f, :username %>
|
||||||
</div>
|
</div>
|
||||||
|
<div>
|
||||||
|
<%= text_input f, :picture, class: "uk-hidden" %>
|
||||||
|
</div>
|
||||||
<div class="controls uk-margin-top">
|
<div class="controls uk-margin-top">
|
||||||
<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;">
|
||||||
|
|||||||
@ -1,3 +1,25 @@
|
|||||||
defmodule BwcWeb.LayoutView do
|
defmodule BwcWeb.LayoutView do
|
||||||
use BwcWeb, :view
|
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
|
end
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user