@click="challenge(sid)"
)
| {{ st.tr["Challenge"] }}
- p.anonymous @nonymous ({{ anonymousCount }})
+ p.anonymous @nonymous ({{ anonymousCount() }})
#chat
Chat(
:newChat="newChat"
this.loadNewchallVariant();
}
},
- computed: {
- anonymousCount: function() {
- let count = 0;
- Object.values(this.people).forEach(p => {
- // Do not cound people who did not send their identity yet:
- count += (!p.name && p.id === 0) ? 1 : 0;
- });
- return count;
- }
- },
created: function() {
if (this.st.variants.length > 0 && this.newchallenge.vid > 0)
this.loadNewchallVariant();
cursor: this.cursor
},
success: (response) => {
- if (
- response.games.length > 0 &&
- this.games.length == 0 &&
- this.gdisplay == "live"
- ) {
- document
- .getElementById("btnGcorr")
- .classList.add("somethingnew");
+ const L = response.games.length;
+ if (L > 0) {
+ this.cursor = response.games[L - 1].created;
+ if (this.games.length == 0 && this.gdisplay == "live") {
+ document
+ .getElementById("btnGcorr")
+ .classList.add("somethingnew");
+ }
}
this.games = this.games.concat(
response.games.map(g => {
["random-" + pc.randomness]: true
};
},
+ anonymousCount: function() {
+ let count = 0;
+ Object.values(this.people).forEach(p => {
+ // Do not cound people who did not send their identity yet:
+ count += (!p.name && p.id === 0) ? 1 : 0;
+ });
+ return count;
+ },
visibilityChange: function() {
// TODO: Use document.hidden? https://webplatform.news/issues/2019-03-27
this.send(
if (!s.page)
// Peer is in Hall
this.send("askchallenges", { target: s.sid });
- // Peer is in Game
- else this.send("askgame", { target: s.sid, page: page });
+ // Peer is in Game: ask only if live game
+ else if (!page.match(/\/[0-9]+$/))
+ this.send("askgame", { target: s.sid, page: page });
});
break;
}
this.people[data.from] = { pages: [{ path: page, focus: true }] };
if (data.code == "connect")
this.send("askchallenges", { target: data.from });
- else this.send("askgame", { target: data.from, page: page });
+ // Ask game only if live:
+ else if (!page.match(/\/[0-9]+$/))
+ this.send("askgame", { target: data.from, page: page });
} else {
// Append page if not already in list
if (!(this.people[data.from].pages.find(p => p.path == page)))
}
break;
}
- case "game": {
- // Individual request
+ case "game": // Individual request
+ case "newgame": {
const game = data.data;
// Ignore games where I play (will go in MyGames page)
if (game.players.every(p =>
cursor: this.cursor
},
success: (res) => {
- if (res.games.length > 0) {
- const L = res.games.length;
+ const L = res.games.length;
+ if (L > 0) {
this.cursor = res.games[L - 1].created;
let moreGames = res.games.map(g => {
const vname = this.getVname(g.vid);
});
// Add new challenge:
chall.from = {
- // Decompose to avoid revealing email
sid: this.st.user.sid,
id: this.st.user.id,
name: this.st.user.name
{
data: { chall: chall },
success: (response) => {
- finishAddChallenge(response.cid);
+ finishAddChallenge(response.id);
}
}
);
finishProcessingChallenge: function(c) {
if (c.accepted) {
c.seat = {
- // Again, avoid c.seat = st.user to not reveal email
sid: this.st.user.sid,
id: this.st.user.id,
name: this.st.user.name
},
// NOTE: when launching game, the challenge is already being deleted
launchGame: function(c) {
- let players =
+ // White player index 0, black player index 1:
+ const players =
!!c.mycolor
? (c.mycolor == "w" ? [c.seat, c.from] : [c.from, c.seat])
: shuffle([c.from, c.seat]);
id: getRandString(),
fen: c.fen || V.GenRandInitFen(c.randomness),
randomness: c.randomness, //for rematch
- // White player index 0, black player index 1:
- players: c.mycolor
- ? (c.mycolor == "w" ? [c.seat, c.from] : [c.from, c.seat])
- : shuffle([c.from, c.seat]),
+ players: players,
vid: c.vid,
cadence: c.cadence
};
if (!!oppsid)
// Opponent is online
this.send("startgame", { data: gameInfo, target: oppsid });
+ // If new corr game, notify Hall (except opponent and me)
+ if (c.type == "corr") {
+ this.send(
+ "newgame",
+ {
+ data: gameInfo,
+ excluded: [this.st.user.sid, oppsid]
+ }
+ );
+ }
// Notify MyGames page:
this.send(
"notifynewgame",
{
data: gameInfo,
- targets: gameInfo.players.map(p => {
- return { sid: p.sid, id: p.id };
- })
+ targets: gameInfo.players
}
);
// NOTE: no need to send the game to the room, since I'll connect
"POST",
{
// cid is useful to delete the challenge:
- data: { gameInfo: gameInfo, cid: c.id },
+ data: {
+ gameInfo: gameInfo,
+ cid: c.id
+ },
success: (response) => {
- gameInfo.id = response.gameId;
+ gameInfo.id = response.id;
notifyNewgame();
- this.$router.push("/game/" + response.gameId);
+ this.$router.push("/game/" + response.id);
}
}
);
margin: 5px 0
button#loadMoreBtn
- margin-top: 0
- margin-bottom: 0
+ display: block
+ margin: 0 auto
td.remove-preset
background-color: lightgrey