"GET",
{uid: this.st.user.id},
response => {
- console.log(response.challenges);
- // TODO: post-treatment on challenges ?
- Array.prototype.push.apply(this.challenges, response.challenges);
+ // Gather all senders names, and then retrieve full identity:
+ // (TODO [perf]: some might be online...)
+ const uids = response.challenges.map(c => { return c.uid });
+ ajax("/users",
+ "GET",
+ { ids: uids.join(",") },
+ response2 => {
+ let names = {};
+ response2.users.forEach(u => {names[u.id] = u.name});
+ this.challenges = this.challenges.concat(
+ response.challenges.map(c => {
+ // (just players names in fact)
+ const from = {name: names[c.uid], id: c.uid};
+ const type = this.classifyObject(c);
+ const vname = this.getVname(c.vid);
+ return Object.assign({}, c, {type: type, vname: vname, from: from});
+ })
+ )
+ }
+ );
}
);
+ // TODO: I don't like this code below; improvement?
+ let retryForVnames = setInterval(() => {
+ if (this.st.variants.length > 0) //variants array is loaded
+ {
+ if (this.games.length > 0 && this.games[0].vname == "")
+ {
+ // Fix games' vnames:
+ this.games.forEach(g => { g.vname = this.getVname(g.vid); });
+ }
+ if (this.challenges.length > 0 && this.challenges[0].vname == "")
+ {
+ // Fix challenges' vnames:
+ this.challenges.forEach(c => { c.vname = this.getVname(c.vid); });
+ }
+ clearInterval(retryForVnames);
+ }
+ }, 50);
}
// 0.1] Ask server for room composition:
const funcPollClients = () => {
// TODO: ...filter(...)[0].name, one-line, just remove this function
getVname: function(vid) {
const vIdx = this.st.variants.findIndex(v => v.id == vid);
- return this.st.variants[vIdx].name;
+ return vIdx >= 0 ? this.st.variants[vIdx].name : "";
},
getSid: function(pname) {
const pIdx = this.people.findIndex(pl => pl.name == pname);
if (!!error)
return alert(error);
const ctype = this.classifyObject(this.newchallenge);
+ if (ctype == "corr" && this.st.user.id <= 0)
+ return alert("Please log in to play correspondance games");
// NOTE: "from" information is not required here
let chall = Object.assign({}, this.newchallenge);
const finishAddChallenge = (cid,warnDisconnected) => {
ajax(
"/challenges",
"POST",
- chall,
+ { chall: chall },
response => { finishAddChallenge(response.cid); }
);
}
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
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)