@@ -2,6 +2,7 @@ import {BASE_URL, loadPage, WEBSOCKET_URL} from "./spa.js";
2
2
import { getActiveUserNickname } from "./utils.js" ;
3
3
import BaseComponent from "../components/Component.js" ;
4
4
import { notify } from "../components/Notification.js" ;
5
+
5
6
class TournamentPlayers extends BaseComponent {
6
7
constructor ( state , parentElement ) {
7
8
super ( state , parentElement ) ;
@@ -24,111 +25,126 @@ class TournamentPlayers extends BaseComponent {
24
25
` ) . join ( "" ) }
25
26
` ;
26
27
}
28
+
27
29
render ( ) {
28
30
this . html = this . handleHTML ( ) ;
29
31
super . render ( ) ;
30
32
31
33
}
32
34
}
33
- function handleButtons ( players , socket )
34
- {
35
+
36
+ function handleButtons ( players , socket ) {
35
37
const nickname = getActiveUserNickname ( ) ;
36
38
const buttonWrapper = document . getElementById ( "button-wrapper" ) ;
37
39
let player = players . find ( player => player . nickname === nickname )
38
- if ( ! player )
40
+ if ( ! player )
39
41
return
40
- if ( player . owner )
41
- {
42
+ if ( player . owner ) {
42
43
buttonWrapper . innerHTML = `<button id="start-button">Start</button>`
43
44
let button = document . getElementById ( "start-button" ) ;
44
45
button . addEventListener ( "click" , ( ) => {
45
46
socket . send ( JSON . stringify ( { send_type : "start" , data : { nickname : nickname } } ) ) ;
46
47
} ) ;
47
- }
48
- else
49
- {
48
+ } else {
50
49
buttonWrapper . innerHTML = `<button id="ready-button">Ready</button>`
51
50
let button = document . getElementById ( "ready-button" ) ;
52
51
button . addEventListener ( "click" , ( ) => {
53
52
socket . send ( JSON . stringify ( { send_type : "ready" , data : { nickname : nickname } } ) ) ;
54
53
} ) ;
55
54
}
56
55
}
57
- function handleErrorStates ( data )
58
- {
59
- notify ( data . message , 3 , 'error' )
56
+
57
+ function handleErrorStates ( data ) {
58
+ notify ( data . message , 3 , 'error' )
59
+ setTimeout ( ( ) => {
60
+ loadPage ( "/home/" )
61
+ } , 3000 ) ;
60
62
}
61
- function renderTournamentInfo ( response , socket )
62
- {
63
- let parentElement = document . getElementById ( "tournament-participants" ) ;
63
+
64
+ function renderTournamentInfo ( response , socket ) {
65
+ let parentElement = document . getElementById ( "tournament-participants" ) ;
64
66
const tournamentPlayers = new TournamentPlayers ( { players : response . data . players } , parentElement ) ;
65
67
tournamentPlayers . render ( ) ;
66
- handleButtons ( response . data . players , socket )
68
+ handleButtons ( response . data . players , socket )
67
69
document . getElementById ( "tournament-header" ) . innerText = response . data . tournament_name ;
68
70
}
69
- function handleGameRedirection ( response )
70
- {
71
- for ( let game of response . data )
72
- {
73
- if ( game . players . includes ( getActiveUserNickname ( ) ) )
74
- {
71
+
72
+ function handleGameRedirection ( response ) {
73
+ for ( let game of response . data ) {
74
+ if ( game . players . includes ( getActiveUserNickname ( ) ) ) {
75
75
console . log ( "redirecting to game" )
76
76
loadPage ( `/game/${ game . game_id } ` )
77
77
}
78
78
}
79
79
}
80
- function connectToSocket ( )
81
- {
80
+
81
+ function handleFinishedTournament ( response ) {
82
+ let winner = response . data . winner ;
83
+ console . log ( "winner" , winner )
84
+ let winnerHTML = `
85
+ <div class="winner-wrapper">
86
+ <div class="winner-image-wrapper">
87
+ <img src="${ BASE_URL } ${ winner . profile_picture } " alt="" />
88
+ </div>
89
+ <h1>Winner is ${ winner . nickname } </h1>
90
+ </div>
91
+ `
92
+
93
+ let element = document . createElement ( "div" ) ;
94
+ element . id = "game-message-wrapper" ;
95
+ element . innerHTML = winnerHTML ;
96
+ document . body . appendChild ( element ) ;
97
+ setTimeout ( ( ) => {
98
+ loadPage ( "/home/" )
99
+ } , 5000 ) ;
100
+ }
101
+
102
+ function connectToSocket ( ) {
82
103
let errorStates = [
83
104
"invalid_profile" ,
84
105
"invalid_tournament" ,
85
106
"tournament_started" ,
86
107
"players_not_ready" ,
87
108
"invalid_params" ,
109
+ "tournament_finished"
88
110
]
89
- try
90
- {
111
+ try {
91
112
const nickname = getActiveUserNickname ( ) ;
92
- const tournamentId = window . location . pathname . split ( "/" ) . filter ( Boolean ) [ 1 ] ;
113
+ const tournamentId = window . location . pathname . split ( "/" ) . filter ( Boolean ) [ 1 ] ;
93
114
const url = `${ WEBSOCKET_URL } /tournament/?nickname=${ nickname } &tournament_id=${ tournamentId } ` ;
94
115
const socket = new WebSocket ( url ) ;
95
116
96
117
socket . onopen = ( ) => {
97
- if ( localStorage . getItem ( "tournament_id" ) )
98
- {
99
- localStorage . removeItem ( "tournament_id" ) ;
100
- console . log ( "sending check_match" )
101
- socket . send ( JSON . stringify ( { send_type : "checkMatch" } ) ) ;
102
- }
118
+ if ( localStorage . getItem ( "tournament_id" ) ) {
119
+ localStorage . removeItem ( "tournament_id" ) ;
120
+ socket . send ( JSON . stringify ( { send_type : "checkMatch" } ) ) ;
121
+ }
103
122
}
104
123
socket . onmessage = ( event ) => {
105
124
const response = JSON . parse ( event . data ) ;
106
125
console . log ( "socket sent data" , response )
107
- if ( errorStates . includes ( response . send_type ) )
108
- {
126
+ if ( errorStates . includes ( response . send_type ) ) {
109
127
handleErrorStates ( response ) ;
110
128
}
111
- if ( response . send_type === "tournament_info" )
112
- {
113
- renderTournamentInfo ( response , socket ) ;
114
- }
115
- else if ( response . send_type === "game_info" )
116
- {
129
+ if ( response . send_type === "tournament_info" ) {
130
+ renderTournamentInfo ( response , socket ) ;
131
+ } else if ( response . send_type === "game_info" ) {
117
132
handleGameRedirection ( response ) ;
133
+ } else if ( response . send_type === "tournament_finished" ) {
134
+ handleFinishedTournament ( response ) ;
118
135
}
119
136
}
120
137
socket . onclose = ( ) => {
121
138
console . log ( "disconnected from the server" ) ;
122
139
}
123
140
124
- }
125
- catch ( e )
126
- {
141
+ } catch ( e ) {
127
142
console . error ( e ) ;
128
143
}
129
144
}
130
- async function App ( )
131
- {
145
+
146
+ async function App ( ) {
132
147
connectToSocket ( )
133
148
}
149
+
134
150
App ( ) . catch ( e => console . error ( e ) )
0 commit comments