let names = {};
response.challenges.forEach(c => {
if (c.uid != this.st.user.id) names[c.uid] = "";
- else if (!!c.target && c.target != this.st.user.id)
+ else if (c.target && c.target != this.st.user.id)
names[c.target] = "";
});
const addChallenges = () => {
processChat: function(chat) {
this.send("newchat", { data: chat });
},
+ getOppsid: function(c) {
+ let oppsid = c.from.sid; //may not be defined if corr + offline opp
+ if (!oppsid) {
+ oppsid = Object.keys(this.people).find(
+ sid => this.people[sid].id == c.from.id
+ );
+ }
+ return oppsid;
+ },
// Messaging center:
socketMessageListener: function(msg) {
if (!this.conn) return;
// Disconnect means no more tmpIds:
if (data.code == "disconnect") {
// Remove the live challenge sent by this player:
- ArrayFun.remove(this.challenges, c => c.from.sid == data.from);
+ ArrayFun.remove(
+ this.challenges,
+ c => c.type == "live" && c.from.sid == data.from
+ );
} else {
// Remove the matching live game if now unreachable
const gid = data.page.match(/[a-zA-Z0-9]+$/)[0];
}
},
newChallenge: async function() {
- if (this.newchallenge.cadence.match(/^[0-9]+$/))
+ if (!!(this.newchallenge.cadence.match(/^[0-9]+$/)))
this.newchallenge.cadence += "+0"; //assume minutes, no increment
const ctype = this.classifyObject(this.newchallenge);
// TODO: cadence still unchecked so ctype could be wrong...
};
this.launchGame(c);
} else {
-
-debugger;
-
- this.send("refusechallenge", { data: c.id, target: c.from.sid });
+ const oppsid = this.getOppsid(c);
+ if (oppsid)
+ this.send("refusechallenge", { data: c.id, target: oppsid });
+ if (c.type == "corr")
+ ajax("/challenges", "DELETE", { id: c.id });
}
this.send("deletechallenge", { data: c.id });
},
}
else {
// My challenge
- if (c.type == "corr") {
+ if (c.type == "corr")
ajax("/challenges", "DELETE", { id: c.id });
- }
this.send("deletechallenge", { data: c.id });
}
// In all cases, the challenge is consumed:
vid: c.vid,
cadence: c.cadence
};
- let oppsid = c.from.sid; //may not be defined if corr + offline opp
- if (!oppsid) {
- oppsid = Object.keys(this.people).find(
- sid => this.people[sid].id == c.from.id
- );
- }
const notifyNewgame = () => {
+ const oppsid = this.getOppsid(c);
if (oppsid)
//opponent is online
this.send("startgame", { data: gameInfo, target: oppsid });