Skip to content

Commit dda984c

Browse files
committed
FIxes
1 parent ce67266 commit dda984c

File tree

5 files changed

+38
-53
lines changed

5 files changed

+38
-53
lines changed

services/app/apps/codebattle/lib/codebattle/game/engine.ex

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ defmodule Codebattle.Game.Engine do
192192
lang: editor_lang
193193
})
194194

195-
196195
{:ok, _game} = store_result!(new_game)
197196

198197
Codebattle.PubSub.broadcast("game:finished", %{game: new_game})
@@ -389,7 +388,7 @@ defmodule Codebattle.Game.Engine do
389388
end
390389

391390
def toggle_ban_player(%Game{} = game, player_id) do
392-
{:ok, {_old_game_state, new_game}} = fire_transition(game.id, :toggle_ban_player, %{player_id: player_id})
391+
{:ok, {_old_game_state, new_game}} = fire_transition(game.id, :toggle_ban_player, %{player_id: player_id})
393392
{:ok, new_game}
394393
end
395394

@@ -398,7 +397,6 @@ defmodule Codebattle.Game.Engine do
398397
{:ok, game}
399398
end
400399

401-
402400
def trigger_timeout(%Game{} = game) do
403401
Logger.debug("Trigger timeout for game: #{game.id}")
404402
{:ok, {old_game_state, new_game}} = fire_transition(game.id, :timeout, %{})

services/app/apps/codebattle/lib/codebattle/tournament/context.ex

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@ defmodule Codebattle.Tournament.Context do
1616
@states_from_restore ["waiting_participants"]
1717

1818
def get_user_latest_game_id(tournament, user_id) do
19-
player = Tournament.Players.get_player(tournament, user_id)
20-
21-
if player && player.matches_ids != [] do
22-
match_id = Enum.max(player.matches_ids)
23-
tournament |> Tournament.Matches.get_match(match_id) |> Map.get(:game_id)
19+
tournament
20+
|> Tournament.Helpers.get_player_latest_match(user_id)
21+
|> case do
22+
%{game_id: game_id} -> game_id
23+
_ -> nil
2424
end
2525
end
2626

services/app/apps/codebattle/lib/codebattle/tournament/helpers.ex

Lines changed: 11 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -238,33 +238,20 @@ defmodule Codebattle.Tournament.Helpers do
238238
# end
239239
# end
240240

241-
def get_active_game_id(tournament, player_id) do
242-
player = get_player(tournament, player_id)
243-
244-
if player do
245-
match_id = List.last(player.matches_ids)
246-
247-
if match_id do
248-
tournament
249-
|> get_match(match_id)
250-
|> case do
251-
%{state: "playing"} -> match_id
252-
_ -> nil
253-
end
254-
end
241+
def get_player_latest_match(tournament, player_id) do
242+
with player when not is_nil(player) <- get_player(tournament, player_id),
243+
true <- player.matches_ids != [],
244+
match_id when not is_nil(match_id) <- Enum.max(player.matches_ids) do
245+
get_match(tournament, match_id)
246+
else
247+
_ -> nil
255248
end
256249
end
257250

258-
def get_active_player_game_id(_tournament, nil), do: nil
259-
260-
def get_active_player_game_id(tournament, player) do
261-
match_id = List.last(player.matches_ids)
262-
if match_id do
263-
get_match(tournament, match_id)
264-
|> case do
265-
%{game_id: game_id} -> game_id
266-
_ -> nil
267-
end
251+
def get_active_game_id(tournament, player_id) do
252+
case get_player_latest_match(tournament, player_id) do
253+
%{state: "playing", game_id: game_id} -> game_id
254+
_ -> nil
268255
end
269256
end
270257

services/app/apps/codebattle/lib/codebattle/tournament/strategy/base.ex

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -210,30 +210,31 @@ defmodule Codebattle.Tournament.Base do
210210
end
211211

212212
def unban_player(tournament, player, game_ids) do
213-
new_state =
214-
if tournament.state == "finished" do
215-
"finished"
216-
else
217-
"active"
218-
end
219-
220-
new_player = %{player | state: new_state}
221-
Tournament.Players.put_player(tournament, new_player)
213+
new_state =
214+
if tournament.state == "finished" do
215+
"finished"
216+
else
217+
"active"
218+
end
222219

223-
Codebattle.PubSub.broadcast("tournament:player:unbanned", %{
224-
tournament: tournament,
225-
player: new_player,
226-
game_ids: game_ids
227-
})
220+
new_player = %{player | state: new_state}
221+
Tournament.Players.put_player(tournament, new_player)
228222

223+
Codebattle.PubSub.broadcast("tournament:player:unbanned", %{
224+
tournament: tournament,
225+
player: new_player,
226+
game_ids: game_ids
227+
})
229228
end
230229

231230
def toggle_ban_player(tournament, %{user_id: user_id}) do
232231
player = Tournament.Players.get_player(tournament, user_id)
232+
233233
if player do
234-
game_id = get_active_player_game_id(tournament, player)
234+
game_id = get_active_game_id(tournament, user_id)
235+
235236
if game_id do
236-
Game.Context.toggle_ban_player(game_id, %{player_id: player.id})
237+
Game.Context.toggle_ban_player(game_id, %{player_id: user_id})
237238
end
238239

239240
if player.state == "banned" do
@@ -242,6 +243,7 @@ defmodule Codebattle.Tournament.Base do
242243
ban_player(tournament, player, [game_id])
243244
end
244245
end
246+
245247
tournament
246248
end
247249

services/app/apps/codebattle/lib/codebattle_web/channels/game_channel.ex

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,6 @@ defmodule CodebattleWeb.GameChannel do
4343
%{entries: ranking}
4444
end)
4545

46-
banned? = current_player.state == 'banned'
47-
4846
{:ok,
4947
%{
5048
active_game_id: active_game_id,
@@ -65,7 +63,7 @@ defmodule CodebattleWeb.GameChannel do
6563
},
6664
assign(socket,
6765
tournament_id: game.tournament_id,
68-
banned?: banned?,
66+
banned?: current_player.state == "banned",
6967
game_id: game_id,
7068
follow_id: follow_id
7169
)}
@@ -326,7 +324,7 @@ defmodule CodebattleWeb.GameChannel do
326324
def handle_info(%{event: "user:banned", payload: %{player: player}}, socket) do
327325
user_id = socket.assigns.current_user.id
328326

329-
if (user_id == player.id) do
327+
if user_id == player.id do
330328
socket = assign(socket, banned?: true)
331329
end
332330

@@ -337,7 +335,7 @@ defmodule CodebattleWeb.GameChannel do
337335
def handle_info(%{event: "user:unbanned", payload: %{player: player}}, socket) do
338336
user_id = socket.assigns.current_user.id
339337

340-
if (user_id == player.id) do
338+
if user_id == player.id do
341339
socket = assign(socket, banned?: false)
342340
end
343341

0 commit comments

Comments
 (0)