- ajax(
- "/challenges",
- "GET",
- {uid: this.st.user.id},
- response => {
- console.log(response.challenges);
- // TODO: post-treatment on challenges ?
- this.challenges = this.challenges.concat(response.challenges);
+ ajax(
+ "/challenges",
+ "GET",
+ {uid: this.st.user.id},
+ response => {
+ // 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); });