const uids = response.challenges.map(c => { return c.uid });
ajax("/users",
"GET",
- { ids: uids },
- names => {
+ { 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)
);
}
);
+ // 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); });
+ }
+ if (this.challenges.length > 0 && this.challenges[0].vname == "")
+ {
+ // Fix challenges' vnames:
+ this.challenges.forEach(c => { c.vname = this.getVname(c.vid); });
+ }
+ clearInterval(retryForVnames);
+ }
+ }, 50);
}
// 0.1] Ask server for room composition:
const funcPollClients = () => {
// TODO: ...filter(...)[0].name, one-line, just remove this function
getVname: function(vid) {
const vIdx = this.st.variants.findIndex(v => v.id == vid);
- return this.st.variants[vIdx].name;
+ return vIdx >= 0 ? this.st.variants[vIdx].name : "";
},
getSid: function(pname) {
const pIdx = this.people.findIndex(pl => pl.name == pname);
});
},
- getByName: function(names, cb) {
- db.serialize(function() {
- const query =
- "SELECT id " +
+ getByIds: function(ids, cb) {
+ db.serialize(function() {
+ const query =
+ "SELECT id, name " +
"FROM Users " +
- "WHERE name IN ('" + names.join("','") + "')";
- db.all(query, cb);
- });
+ "WHERE id IN (" + ids + ")";
+ db.all(query, cb);
+ });
},
/////////
const VariantModel =
{
- getByName: function(name, callback)
- {
- db.serialize(function() {
- const query =
- "SELECT * " +
- "FROM Variants " +
- "WHERE name='" + name + "'";
- db.get(query, callback);
- });
- },
-
getAll: function(callback)
{
db.serialize(function() {
});
router.get("/users", access.ajax, (req,res) => {
- // TODO: list all names + id for users of given ID (query "ids")
+ const ids = req.query["ids"];
+ UserModel.getByIds(ids, (err,users) => {
+ if (!!err)
+ return res.json({errmsg: err.toString()});
+ return res.json({users:users});
+ });
});
// to: object user (to who we send an email)