}
if (c.accepted)
{
- c.seat = this.people[0]; //avoid sending email
+ c.seat = this.people[0]; //== this.st.user, avoid revealing email
this.launchGame(c);
}
else
cid: c.id, target: c.from.sid}));
}
}
- else
- localStorage.removeItem("challenge");
- if (c.type == "corr")
+ else //my challenge
{
- ajax(
- "/challenges",
- "DELETE",
- {id: c.id}
- );
+ localStorage.removeItem("challenge");
+ if (c.type == "corr")
+ {
+ ajax(
+ "/challenges",
+ "DELETE",
+ {id: c.id}
+ );
+ }
}
},
// NOTE: when launching game, the challenge is already deleted
vid: c.vid,
timeControl: c.timeControl,
};
- this.st.conn.send(JSON.stringify({code:"newgame",
- gameInfo:gameInfo, target:c.from.sid, cid:c.id}));
+ let target = c.from.sid; //may not be defined if corr + offline opp
+ if (!target)
+ {
+ const opponent = this.people.find(p => p.id == c.from.id);
+ if (!!opponent)
+ target = opponent.sid
+ }
+ if (!!target) //opponent is online
+ {
+ this.st.conn.send(JSON.stringify({code:"newgame",
+ gameInfo:gameInfo, target:target, cid:c.id}));
+ }
if (c.type == "live")
this.startNewGame(gameInfo);
else //corr: game only on server
ajax(
"/games",
"POST",
- {gameInfo: gameInfo}
+ {gameInfo: gameInfo, cid: c.id}, //cid useful to delete challenge
+ response => { this.$router.push("/game/" + response.gameId); }
);
- // TODO: redirection here
}
},
// NOTE: for live games only (corr games start on the server)