1 | module.exports = () => {
|
2 | function winnerFromEndMsg(invite, maybeGameEndMsg) {
|
3 | if (!invite || !maybeGameEndMsg) {
|
4 | return null;
|
5 | }
|
6 | const players = [invite.value.author, invite.value.content.inviting];
|
7 | return winnerFromEndMsgPlayers(players, maybeGameEndMsg);
|
8 | }
|
9 |
|
10 | function winnerFromEndMsgPlayers(players, maybeGameEndMsg) {
|
11 | let winner;
|
12 |
|
13 | if (!maybeGameEndMsg || !players) {
|
14 | return null;
|
15 | }
|
16 | switch (maybeGameEndMsg.value.content.status) {
|
17 | case 'mate':
|
18 | return maybeGameEndMsg.value.author;
|
19 | case 'draw':
|
20 | return null;
|
21 | case 'resigned':
|
22 | [winner] = players.filter(playerId => playerId != maybeGameEndMsg.value.author);
|
23 | return winner;
|
24 | default:
|
25 | return null;
|
26 | }
|
27 | }
|
28 |
|
29 | return {
|
30 | winnerFromEndMsg,
|
31 | winnerFromEndMsgPlayers,
|
32 | };
|
33 | };
|