projects
/
vchess.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Some fixes + draft newmove pingback logic (unfinished, not working)
[vchess.git]
/
client
/
src
/
views
/
Hall.vue
diff --git
a/client/src/views/Hall.vue
b/client/src/views/Hall.vue
index
2141cf9
..
6ecc552
100644
(file)
--- a/
client/src/views/Hall.vue
+++ b/
client/src/views/Hall.vue
@@
-89,7
+89,7
@@
main
#players
p(
v-for="sid in Object.keys(people)"
#players
p(
v-for="sid in Object.keys(people)"
- v-if="people[sid].name"
+ v-if="
!!
people[sid].name"
)
span {{ people[sid].name }}
button.player-action(
)
span {{ people[sid].name }}
button.player-action(
@@
-98,7
+98,7
@@
main
)
| {{ st.tr["Observe"] }}
button.player-action(
)
| {{ st.tr["Observe"] }}
button.player-action(
- v-else-if="st.user.id > 0 && sid
!=
st.user.sid"
+ v-else-if="st.user.id > 0 && sid
!=
st.user.sid"
@click="challenge(sid)"
)
| {{ st.tr["Challenge"] }}
@click="challenge(sid)"
)
| {{ st.tr["Challenge"] }}
@@
-211,7
+211,7
@@
export default {
"st.variants": function() {
// Set potential challenges and games variant names:
this.challenges.concat(this.games).forEach(o => {
"st.variants": function() {
// Set potential challenges and games variant names:
this.challenges.concat(this.games).forEach(o => {
- if (
o.vname == ""
) o.vname = this.getVname(o.vid);
+ if (
!o.vname
) o.vname = this.getVname(o.vid);
});
if (!this.newchallenge.V && this.newchallenge.vid > 0)
this.loadNewchallVariant();
});
if (!this.newchallenge.V && this.newchallenge.vid > 0)
this.loadNewchallVariant();
@@
-337,7
+337,7
@@
export default {
document.getElementById("cadence").focus();
},
send: function(code, obj) {
document.getElementById("cadence").focus();
},
send: function(code, obj) {
- if (this.conn) {
+ if (
!!
this.conn) {
this.conn.send(JSON.stringify(Object.assign({ code: code }, obj)));
}
},
this.conn.send(JSON.stringify(Object.assign({ code: code }, obj)));
}
},
@@
-367,7
+367,7
@@
export default {
: document.getElementById("btn" + letter.toUpperCase() + type);
elt.classList.add("active");
elt.classList.remove("somethingnew"); //in case of
: document.getElementById("btn" + letter.toUpperCase() + type);
elt.classList.add("active");
elt.classList.remove("somethingnew"); //in case of
- if (elt.previousElementSibling)
+ if (
!!
elt.previousElementSibling)
elt.previousElementSibling.classList.remove("active");
else elt.nextElementSibling.classList.remove("active");
},
elt.previousElementSibling.classList.remove("active");
else elt.nextElementSibling.classList.remove("active");
},
@@
-385,11
+385,11
@@
export default {
let gids = [];
this.people[sid].pages.forEach(p => {
const matchGid = p.match(/[a-zA-Z0-9]+$/);
let gids = [];
this.people[sid].pages.forEach(p => {
const matchGid = p.match(/[a-zA-Z0-9]+$/);
- if (matchGid) gids.push(matchGid[0]);
+ if (
!!
matchGid) gids.push(matchGid[0]);
});
const gid = gids[Math.floor(Math.random() * gids.length)];
const game = this.games.find(g => g.id == gid);
});
const gid = gids[Math.floor(Math.random() * gids.length)];
const game = this.games.find(g => g.id == gid);
- if (game) this.showGame(game);
+ if (
!!
game) this.showGame(game);
else this.$router.push("/game/" + gid); //game vs. me
},
showGame: function(g) {
else this.$router.push("/game/" + gid); //game vs. me
},
showGame: function(g) {
@@
-407,6
+407,15
@@
export default {
processChat: function(chat) {
this.send("newchat", { data: chat });
},
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;
// Messaging center:
socketMessageListener: function(msg) {
if (!this.conn) return;
@@
-467,7
+476,10
@@
export default {
// Disconnect means no more tmpIds:
if (data.code == "disconnect") {
// Remove the live challenge sent by this player:
// 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];
} else {
// Remove the matching live game if now unreachable
const gid = data.page.match(/[a-zA-Z0-9]+$/)[0];
@@
-512,21
+524,19
@@
export default {
name: user.name,
pages: this.people[user.sid].pages
});
name: user.name,
pages: this.people[user.sid].pages
});
- if (user.name) {
- // If I multi-connect, kill current connexion if no mark (I'm older)
+ // If I multi-connect, kill current connexion if no mark (I'm older)
+ if (this.newConnect[user.sid]) {
if (
if (
- this.newConnect[user.sid] &&
user.id > 0 &&
user.id == this.st.user.id &&
user.id > 0 &&
user.id == this.st.user.id &&
- user.sid != this.st.user.sid
+ user.sid != this.st.user.sid &&
+ !this.killed[this.st.user.sid]
) {
) {
- if (!this.killed[this.st.user.sid]) {
this.send("killme", { sid: this.st.user.sid });
this.killed[this.st.user.sid] = true;
this.send("killme", { sid: this.st.user.sid });
this.killed[this.st.user.sid] = true;
- }
}
}
+ delete this.newConnect[user.sid];
}
}
- delete this.newConnect[user.sid];
break;
}
case "askchallenge": {
break;
}
case "askchallenge": {
@@
-630,7
+640,7
@@
export default {
}
case "result": {
let g = this.games.find(g => g.id == data.gid);
}
case "result": {
let g = this.games.find(g => g.id == data.gid);
- if (g) g.score = data.score;
+ if (
!!
g) g.score = data.score;
break;
}
case "startgame": {
break;
}
case "startgame": {
@@
-671,7
+681,7
@@
export default {
const vModule = await import("@/variants/" + vname + ".js");
this.newchallenge.V = vModule.VariantRules;
this.newchallenge.vname = vname;
const vModule = await import("@/variants/" + vname + ".js");
this.newchallenge.V = vModule.VariantRules;
this.newchallenge.vname = vname;
- if (cb)
+ if (
!!
cb)
cb();
},
trySetNewchallDiag: function() {
cb();
},
trySetNewchallDiag: function() {
@@
-683,7
+693,7
@@
export default {
window.V = this.newchallenge.V;
if (
this.newchallenge.vid > 0 &&
window.V = this.newchallenge.V;
if (
this.newchallenge.vid > 0 &&
- this.newchallenge.fen &&
+
!!
this.newchallenge.fen &&
V.IsGoodFen(this.newchallenge.fen)
) {
const parsedFen = V.ParseFen(this.newchallenge.fen);
V.IsGoodFen(this.newchallenge.fen)
) {
const parsedFen = V.ParseFen(this.newchallenge.fen);
@@
-694,7
+704,7
@@
export default {
}
},
newChallenge: async function() {
}
},
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.newchallenge.cadence += "+0"; //assume minutes, no increment
const ctype = this.classifyObject(this.newchallenge);
// TODO: cadence still unchecked so ctype could be wrong...
@@
-703,7
+713,7
@@
export default {
error = this.st.tr["Please select a variant"];
else if (ctype == "corr" && this.st.user.id <= 0)
error = this.st.tr["Please log in to play correspondance games"];
error = this.st.tr["Please select a variant"];
else if (ctype == "corr" && this.st.user.id <= 0)
error = this.st.tr["Please log in to play correspondance games"];
- else if (this.newchallenge.to) {
+ else if (
!!
this.newchallenge.to) {
if (this.newchallenge.to == this.st.user.name)
error = this.st.tr["Self-challenge is forbidden"];
else if (
if (this.newchallenge.to == this.st.user.name)
error = this.st.tr["Self-challenge is forbidden"];
else if (
@@
-797,7
+807,11
@@
export default {
};
this.launchGame(c);
} else {
};
this.launchGame(c);
} else {
- 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 });
},
}
this.send("deletechallenge", { data: c.id });
},
@@
-813,9
+827,9
@@
export default {
c.accepted = true;
const vModule = await import("@/variants/" + c.vname + ".js");
window.V = vModule.VariantRules;
c.accepted = true;
const vModule = await import("@/variants/" + c.vname + ".js");
window.V = vModule.VariantRules;
- if (c.to) {
+ if (
!!
c.to) {
// c.to == this.st.user.name (connected)
// c.to == this.st.user.name (connected)
- if (c.fen) {
+ if (
!!
c.fen) {
const parsedFen = V.ParseFen(c.fen);
c.mycolor = V.GetOppCol(parsedFen.turn);
this.tchallDiag = getDiagram({
const parsedFen = V.ParseFen(c.fen);
c.mycolor = V.GetOppCol(parsedFen.turn);
this.tchallDiag = getDiagram({
@@
-836,9
+850,8
@@
export default {
}
else {
// My challenge
}
else {
// My challenge
- if (c.type == "corr")
{
+ if (c.type == "corr")
ajax("/challenges", "DELETE", { id: c.id });
ajax("/challenges", "DELETE", { id: c.id });
- }
this.send("deletechallenge", { data: c.id });
}
// In all cases, the challenge is consumed:
this.send("deletechallenge", { data: c.id });
}
// In all cases, the challenge is consumed:
@@
-857,14
+870,9
@@
export default {
vid: c.vid,
cadence: c.cadence
};
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 notifyNewgame = () => {
- if (oppsid)
+ const oppsid = this.getOppsid(c);
+ if (!!oppsid)
//opponent is online
this.send("startgame", { data: gameInfo, target: oppsid });
// Send game info (only if live) to everyone except me in this tab
//opponent is online
this.send("startgame", { data: gameInfo, target: oppsid });
// Send game info (only if live) to everyone except me in this tab