Skip to content

Commit 870d3f5

Browse files
committed
Fix swiss tournament
1 parent cc33243 commit 870d3f5

File tree

4 files changed

+40
-32
lines changed

4 files changed

+40
-32
lines changed

services/app/apps/codebattle/assets/js/widgets/pages/tournament/Tournament.jsx

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,7 @@ const getTournamentPresentationStatus = state => {
4141
};
4242

4343
function InfoPanel({
44-
currentUserId,
45-
tournament,
46-
playersCount,
47-
hideResults,
48-
canModerate,
44+
currentUserId, tournament, hideResults, canModerate,
4945
}) {
5046
if (
5147
tournament.state === TournamentStates.waitingParticipants
@@ -64,7 +60,7 @@ function InfoPanel({
6460
<IndividualMatches
6561
matches={tournament.matches}
6662
players={tournament.players}
67-
playersCount={playersCount}
63+
playersCount={tournament.playersCount}
6864
currentUserId={currentUserId}
6965
/>
7066
);
@@ -142,18 +138,16 @@ function Tournament({ waitingRoomMachine }) {
142138
] = useState(false);
143139
const [matchConfirmationModalShowing, setMatchConfirmationModalShowing] = useState(false);
144140

145-
const playersCount = useMemo(
146-
() => Object.values(tournament.players).filter(player => (tournament.showBots ? true : !player.isBot)).length,
147-
[tournament.players, tournament.showBots],
148-
);
149141
const isOver = useMemo(
150142
() => [TournamentStates.finished, TournamentStates.cancelled].includes(
151143
tournament.state,
152144
),
153145
[tournament.state],
154146
);
155147
const canModerate = useMemo(() => isOwner || isAdmin, [isOwner, isAdmin]);
156-
const hiddenSidePanel = (tournament.type === 'arena' && tournament.state !== 'waiting_participants') || streamMode;
148+
const hiddenSidePanel = (tournament.type === 'arena'
149+
&& tournament.state !== 'waiting_participants')
150+
|| streamMode;
157151

158152
const panelClassName = cn('mb-2', {
159153
'container-fluid': !streamMode,
@@ -180,10 +174,16 @@ function Tournament({ waitingRoomMachine }) {
180174
]);
181175

182176
useEffect(() => {
183-
const tournamentChannel = connectToTournament(waitingRoomService, tournament?.id)(dispatch);
177+
const tournamentChannel = connectToTournament(
178+
waitingRoomService,
179+
tournament?.id,
180+
)(dispatch);
184181

185182
if (canModerate) {
186-
const tournamentAdminChannel = connectToTournamentAdmin(waitingRoomService, tournament?.id)(dispatch);
183+
const tournamentAdminChannel = connectToTournamentAdmin(
184+
waitingRoomService,
185+
tournament?.id,
186+
)(dispatch);
187187

188188
return () => {
189189
tournamentChannel.leave();
@@ -336,7 +336,7 @@ function Tournament({ waitingRoomMachine }) {
336336
roundTimeoutSeconds={tournament.roundTimeoutSeconds}
337337
name={tournament.name}
338338
players={tournament.players}
339-
playersCount={playersCount}
339+
playersCount={tournament.playersCount}
340340
playersLimit={tournament.playersLimit}
341341
showBots={tournament.showBots}
342342
hideResults={hideResults}
@@ -359,7 +359,7 @@ function Tournament({ waitingRoomMachine }) {
359359
<div className="bg-white h-100 shadow-sm rounded-lg p-3 overflow-auto">
360360
<InfoPanel
361361
tournament={tournament}
362-
playersCount={playersCount}
362+
playersCount={tournament.playersCount}
363363
currentUserId={currentUserId}
364364
hideResults={hideResults}
365365
canModerate={canModerate}
@@ -369,13 +369,15 @@ function Tournament({ waitingRoomMachine }) {
369369
<div className="d-flex flex-column flex-lg-column-reverse col-12 col-lg-3 h-100">
370370
{!tournament.useClan && !hiddenSidePanel && (
371371
<Players
372-
playersCount={playersCount}
372+
playersCount={tournament.playersCount}
373373
players={tournament.players}
374374
showBots={tournament.showBots}
375375
/>
376376
)}
377377
{tournament.useChat && !hiddenSidePanel && <TournamentChat />}
378-
{tournament.useClan && !hiddenSidePanel && <TournamentClanTable />}
378+
{tournament.useClan && !hiddenSidePanel && (
379+
<TournamentClanTable />
380+
)}
379381
</div>
380382
</div>
381383
</div>

services/app/apps/codebattle/assets/js/widgets/pages/tournament/TournamentAdminWidget.jsx

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,7 @@ const getTournamentPresentationStatus = state => {
3636
}
3737
};
3838

39-
function InfoPanel({
40-
currentUserId, tournament, playersCount, hideResults,
41-
}) {
39+
function InfoPanel({ currentUserId, tournament, hideResults }) {
4240
if (
4341
tournament.state === TournamentStates.waitingParticipants
4442
&& tournament.type !== 'team'
@@ -56,7 +54,7 @@ function InfoPanel({
5654
<IndividualMatches
5755
matches={tournament.matches}
5856
players={tournament.players}
59-
playersCount={playersCount}
57+
playersCount={tournament.playersCount}
6058
currentUserId={currentUserId}
6159
/>
6260
);
@@ -122,10 +120,6 @@ function TournamentAdminWidget({ waitingRoomMachine }) {
122120
] = useState(false);
123121
const [matchConfirmationModalShowing, setMatchConfirmationModalShowing] = useState(false);
124122

125-
const playersCount = useMemo(
126-
() => Object.values(tournament.players).filter(player => (tournament.showBots ? true : !player.isBot)).length,
127-
[tournament.players, tournament.showBots],
128-
);
129123
const isOver = useMemo(
130124
() => [TournamentStates.finished, TournamentStates.cancelled].includes(
131125
tournament.state,
@@ -159,7 +153,10 @@ function TournamentAdminWidget({ waitingRoomMachine }) {
159153
]);
160154

161155
useEffect(() => {
162-
const channel = connectToTournament(waitingRoomService, tournament.id)(dispatch);
156+
const channel = connectToTournament(
157+
waitingRoomService,
158+
tournament.id,
159+
)(dispatch);
163160

164161
return () => {
165162
channel.leave();
@@ -289,7 +286,7 @@ function TournamentAdminWidget({ waitingRoomMachine }) {
289286
roundTimeoutSeconds={tournament.roundTimeoutSeconds}
290287
name={tournament.name}
291288
players={tournament.players}
292-
playersCount={playersCount}
289+
playersCount={tournament.playersCount}
293290
playersLimit={tournament.playersLimit}
294291
showBots={tournament.showBots}
295292
hideResults={hideResults}
@@ -307,7 +304,7 @@ function TournamentAdminWidget({ waitingRoomMachine }) {
307304
<div className="bg-white h-100 shadow-sm rounded-lg p-3 overflow-auto">
308305
<InfoPanel
309306
tournament={tournament}
310-
playersCount={playersCount}
307+
playersCount={tournament.playersCount}
311308
currentUserId={currentUserId}
312309
hideResults={hideResults}
313310
canModerate
@@ -316,7 +313,7 @@ function TournamentAdminWidget({ waitingRoomMachine }) {
316313
</div>
317314
<div className={sidePanelClassName}>
318315
<Players
319-
playersCount={playersCount}
316+
playersCount={tournament.playersCount}
320317
players={tournament.players}
321318
showBots={tournament.showBots}
322319
/>

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -788,7 +788,7 @@ defmodule Codebattle.Tournament.Base do
788788
|> db_save!(:with_ets)
789789
|> broadcast_tournament_finished()
790790
|> then(fn tournament ->
791-
Process.send_after(self(), :terminate, to_timeout(minute: 15))
791+
Process.send_after(self(), :terminate, to_timeout(minute: 30))
792792

793793
tournament
794794
end)
@@ -846,6 +846,8 @@ defmodule Codebattle.Tournament.Base do
846846
end
847847

848848
defp maybe_start_round_timer(%{round_timeout_seconds: nil} = tournament), do: tournament
849+
# We don't want to run a timer for the swiss type, because all games already have a timeout
850+
defp maybe_start_round_timer(%{staus: "active", type: "swiss"} = tournament), do: tournament
849851

850852
defp maybe_start_round_timer(tournament) do
851853
Process.send_after(

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -212,9 +212,16 @@ defmodule CodebattleWeb.TournamentChannel do
212212
defp get_tournament_join_payload(tournament, nil) do
213213
ranking = Tournament.Ranking.get_page(tournament, 1)
214214

215+
players =
216+
if tournament.players_count > 256 do
217+
[]
218+
else
219+
Helpers.get_players(tournament)
220+
end
221+
215222
%{
216223
matches: [],
217-
players: [],
224+
players: players,
218225
ranking: ranking,
219226
clans: Helpers.get_clans_by_ranking(tournament, ranking),
220227
current_player: nil,
@@ -224,7 +231,7 @@ defmodule CodebattleWeb.TournamentChannel do
224231

225232
defp get_tournament_join_payload(tournament, current_player) do
226233
player_data =
227-
if tournament.players_count > 128 do
234+
if tournament.players_count > 256 do
228235
player_matches = Helpers.get_matches_by_players(tournament, [current_player.id])
229236

230237
opponents =

0 commit comments

Comments
 (0)