-// ajax(
-// "/games",
-// "GET",
-// {excluded: this.st.user.id},
-// response => {
-// this.games = this.games.concat(response.games);
-// }
-// );
- // Also ask for corr challenges (open + sent to me)
- ajax(
- "/challenges",
- "GET",
- {uid: this.st.user.id},
- response => {
- console.log(response.challenges);
- // TODO: post-treatment on challenges ?
- Array.prototype.push.apply(this.challenges, response.challenges);
- }
- );
- }
- // 0.1] Ask server for room composition:
- const funcPollClients = () => {
- this.st.conn.send(JSON.stringify({code:"pollclients"}));
- };
- if (!!this.st.conn && this.st.conn.readyState == 1) //1 == OPEN state
- funcPollClients();
- else //socket not ready yet (initial loading)
- this.st.conn.onopen = funcPollClients;
- this.st.conn.onmessage = this.socketMessageListener;
- const oldOnclose = this.st.conn.onclose;
- const socketCloseListener = () => {
- oldOnclose(); //reinitialize connexion (in store.js)
- this.st.conn.addEventListener('message', this.socketMessageListener);
- this.st.conn.addEventListener('close', socketCloseListener);
+ ajax(
+ "/games",
+ "GET",
+ { uid: this.st.user.id, excluded: true },
+ response => {
+ this.games = this.games.concat(
+ response.games.map(g => {
+ const type = this.classifyObject(g);
+ const vname = this.getVname(g.vid);
+ return Object.assign({}, g, { type: type, vname: vname });
+ })
+ );
+ }
+ );
+ // Also ask for corr challenges (open + sent by/to me)
+ ajax("/challenges", "GET", { uid: this.st.user.id }, response => {
+ // Gather all senders names, and then retrieve full identity:
+ // (TODO [perf]: some might be online...)
+ let names = {};
+ response.challenges.forEach(c => {
+ if (c.uid != this.st.user.id) names[c.uid] = "";
+ //unknwon for now
+ else if (!!c.target && c.target != this.st.user.id)
+ names[c.target] = "";
+ });
+ const addChallenges = () => {
+ names[this.st.user.id] = this.st.user.name; //in case of
+ this.challenges = this.challenges.concat(
+ response.challenges.map(c => {
+ const from = { name: names[c.uid], id: c.uid }; //or just name
+ const type = this.classifyObject(c);
+ const vname = this.getVname(c.vid);
+ return Object.assign(
+ {},
+ {
+ type: type,
+ vname: vname,
+ from: from,
+ to: c.target ? names[c.target] : ""
+ },
+ c
+ );
+ })
+ );
+ };
+ if (Object.keys(names).length > 0) {
+ ajax(
+ "/users",
+ "GET",
+ { ids: Object.keys(names).join(",") },
+ response2 => {
+ response2.users.forEach(u => {
+ names[u.id] = u.name;
+ });
+ addChallenges();
+ }
+ );
+ } else addChallenges();
+ });
+ const connectAndPoll = () => {
+ this.send("connect");
+ this.send("pollclientsandgamers");