span {{ Object.keys(people).length + " " + st.tr["participant(s):"] }}
span(
v-for="p in Object.values(people)"
- v-if="!!p.name"
+ v-if="p.name"
)
| {{ p.name }}
- span.anonymous(v-if="Object.values(people).some(p => !p.name)")
+ span.anonymous(v-if="Object.values(people).some(p => !p.name && p.id === 0)")
| + @nonymous
Chat(
:players="game.players"
switch (data.code) {
case "pollclients":
data.sockIds.forEach(sid => {
- this.$set(this.people, sid, { id: 0, name: "" });
if (sid != this.st.user.sid) {
this.send("askidentity", { target: sid });
// Ask potentially missed last state, if opponent and I play
if (
- !!this.game.mycolor &&
+ this.game.mycolor &&
this.game.type == "live" &&
this.game.score == "*" &&
this.game.players.some(p => p.sid == sid)
});
break;
case "connect":
- if (!this.people[data.from])
- // TODO: people array should be init only after identity is known
- this.$set(this.people, data.from, { name: "", id: 0 });
- if (!this.people[data.from].name) {
+ if (!this.people[data.from]) {
this.newConnect[data.from] = true; //for self multi-connects tests
this.send("askidentity", { target: data.from });
}
case "disconnect":
this.$delete(this.people, data.from);
break;
- case "mconnect":
- {
+ case "mconnect": {
// TODO: from MyGames page : send mconnect message with the list of gid (live and corr)
// Either me (another tab) or opponent
const sid = data.from;
alert(this.st.tr["New connexion detected: tab now offline"]);
break;
case "askidentity": {
- // Request for identification (TODO: anonymous shouldn't need to reply)
+ // Request for identification
const me = {
// Decompose to avoid revealing email
name: this.st.user.name,
break;
}
case "identity": {
- // TODO: init people array here.
const user = data.data;
+ this.$set(this.people, user.sid, { name: user.name, id: user.id });
if (user.name) {
// If I multi-connect, kill current connexion if no mark (I'm older)
if (
this.killed[this.st.user.sid] = true;
}
}
- if (user.sid != this.st.user.sid) {
- //I already know my identity...
- this.$set(this.people, user.sid, {
- id: user.id,
- name: user.name
- });
- }
}
delete this.newConnect[user.sid];
break;
button(@click="newChallenge()") {{ st.tr["Send challenge"] }}
input#modalPeople.modal(
type="checkbox"
- @click="resetChatColor()"
+ @click="resetSocialColor()"
)
div#peopleWrap(
role="dialog"
#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(
anonymousCount: function() {
let count = 0;
Object.values(this.people).forEach(p => {
- count += !p.name ? 1 : 0;
+ // Do not cound people who did not send their identity yet:
+ count += (!p.name && p.id === 0) ? 1 : 0;
});
return count;
}
url += "?rid=" + g.rids[Math.floor(Math.random() * g.rids.length)];
this.$router.push(url);
},
- resetChatColor: function() {
+ resetSocialColor: function() {
// TODO: this is called twice, once on opening an once on closing
document.getElementById("peopleBtn").classList.remove("somethingnew");
},
data.sockIds.forEach(s => {
const page = s.page || "/";
if (s.sid != this.st.user.sid && !identityAsked[s.sid]) {
- identityAsked[s.sid] = true;
this.send("askidentity", { target: s.sid, page: page });
+ identityAsked[s.sid] = true;
}
if (!this.people[s.sid])
- this.$set(this.people, s.sid, { id: 0, name: "", pages: [page] });
+ // Do not set name or id: identity unknown yet
+ this.$set(this.people, s.sid, { pages: [page] });
else if (this.people[s.sid].pages.indexOf(page) < 0)
this.people[s.sid].pages.push(page);
if (!s.page)
- //peer is in Hall
+ // Peer is in Hall
this.send("askchallenge", { target: s.sid });
- //peer is in Game
+ // Peer is in Game
else this.send("askgame", { target: s.sid, page: page });
});
break;
// So it's a good idea to ask identity if he was anonymous.
// But only ask game / challenge if currently disconnected.
if (!this.people[data.from]) {
- this.$set(this.people, data.from, {
- name: "",
- id: 0,
- pages: [page]
- });
+ this.$set(this.people, data.from, { pages: [page] });
if (data.code == "connect")
this.send("askchallenge", { target: data.from });
else this.send("askgame", { target: data.from, page: page });
} else {
- // append page if not already in list
+ // Append page if not already in list
if (this.people[data.from].pages.indexOf(page) < 0)
this.people[data.from].pages.push(page);
}
- if (this.people[data.from].id == 0) {
+ if (!this.people[data.from].name && this.people[data.from].id !== 0) {
+ // Identity not known yet
this.newConnect[data.from] = true; //for self multi-connects tests
this.send("askidentity", { target: data.from, page: page });
}
}
case "identity": {
const user = data.data;
+ this.$set(this.people, user.sid, {
+ id: user.id,
+ 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 (
this.killed[this.st.user.sid] = true;
}
}
- if (user.sid != this.st.user.sid) {
- //I already know my identity...
- this.$set(this.people, user.sid, {
- id: user.id,
- name: user.name,
- pages: this.people[user.sid].pages
- });
- }
}
delete this.newConnect[user.sid];
break;