summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--public/style.css1
-rw-r--r--schema.sql2
-rw-r--r--server.js125
-rw-r--r--views/head.pug5
4 files changed, 66 insertions, 67 deletions
diff --git a/public/style.css b/public/style.css
index 486b309..bbbcbbd 100644
--- a/public/style.css
+++ b/public/style.css
@@ -391,5 +391,6 @@ div.body img {
.game_item.finished .game_main { background-color: gainsboro }
.game_item.archived .game_head { background-color: darkgray }
.game_item.archived .game_main { background-color: lightgray }
+.game_item.unread .game_head { background-color: orange }
.game_item.your_turn .game_head { background-color: gold }
.game_item.your_turn .game_main { background-color: lightyellow }
diff --git a/schema.sql b/schema.sql
index 65edadf..8cda3d8 100644
--- a/schema.sql
+++ b/schema.sql
@@ -256,8 +256,6 @@ create view user_dynamic_view as
and join_count = 0
) + (
select count(1) from unseen_games where user_id = users.user_id
- ) + (
- select count(1) from unread_chats where user_id = users.user_id
)
as waiting,
is_banned
diff --git a/server.js b/server.js
index 21b60c3..295dbcb 100644
--- a/server.js
+++ b/server.js
@@ -2022,25 +2022,25 @@ function insert_rematch_players(old_game_id, new_game_id, req_user_id, order) {
throw new Error("missing players")
switch (order) {
- default:
- case "swap":
- players.sort((a, b) => roles.indexOf(a.role) - roles.indexOf(b.role))
- for (let i = 0; i < n; ++i)
- players[i].role = roles[(i+1) % n]
- break
- case "keep":
- // do nothing
- break
- case "shuffle":
- // unused for now - random but known
- shuffle(players)
- for (let i = 0; i < n; ++i)
- players[i].role = roles[i]
- break
- case "random":
- for (let i = 0; i < n; ++i)
- players[i].role = "Random " + (i+1)
- break
+ default:
+ case "swap":
+ players.sort((a, b) => roles.indexOf(a.role) - roles.indexOf(b.role))
+ for (let i = 0; i < n; ++i)
+ players[i].role = roles[(i + 1) % n]
+ break
+ case "keep":
+ // do nothing
+ break
+ case "shuffle":
+ // unused for now - random but known
+ shuffle(players)
+ for (let i = 0; i < n; ++i)
+ players[i].role = roles[i]
+ break
+ case "random":
+ for (let i = 0; i < n; ++i)
+ players[i].role = "Random " + (i + 1)
+ break
}
for (let p of players) {
@@ -3372,11 +3372,12 @@ function make_pools(seed, players) {
return designs.pool_players(players, n+1)
throw new Error("cannot create pools for this player/rounds configuration")
-
+ /*
if (v > n+1)
return designs.pool_players(players, n+1)
return [ players ]
+ */
}
if (k === 3) {
@@ -4030,53 +4031,53 @@ function broadcast_presence(game_id) {
function handle_player_message(socket, cmd, arg) {
switch (cmd) {
- case "action":
- on_action(socket, arg[0], arg[1], arg[2])
- break
- case "query":
- on_query(socket, arg[0], arg[1])
- break
- case "resign":
- on_resign(socket)
- break
- case "getnote":
- on_getnote(socket)
- break
- case "putnote":
- on_putnote(socket, arg)
- break
- case "getchat":
- on_getchat(socket, arg)
- break
- case "chat":
- on_chat(socket, arg)
- break
- case "getsnap":
- on_snap(socket, arg | 0)
- break
- case "querysnap":
- on_query_snap(socket, arg[0], arg[1], arg[2])
- break
- default:
- send_message(socket, "error", "Invalid server command: " + cmd)
- break
+ case "action":
+ on_action(socket, arg[0], arg[1], arg[2])
+ break
+ case "query":
+ on_query(socket, arg[0], arg[1])
+ break
+ case "resign":
+ on_resign(socket)
+ break
+ case "getnote":
+ on_getnote(socket)
+ break
+ case "putnote":
+ on_putnote(socket, arg)
+ break
+ case "getchat":
+ on_getchat(socket, arg)
+ break
+ case "chat":
+ on_chat(socket, arg)
+ break
+ case "getsnap":
+ on_snap(socket, arg | 0)
+ break
+ case "querysnap":
+ on_query_snap(socket, arg[0], arg[1], arg[2])
+ break
+ default:
+ send_message(socket, "error", "Invalid server command: " + cmd)
+ break
}
}
function handle_observer_message(socket, cmd, arg) {
switch (cmd) {
- case "getsnap":
- on_snap(socket, arg)
- break
- case "querysnap":
- on_query_snap(socket, arg[0], arg[1], arg[2])
- break
- case 'query':
- on_query(socket, arg[0], arg[1])
- break
- default:
- send_message(socket, "error", "Invalid server command: " + cmd)
- break
+ case "getsnap":
+ on_snap(socket, arg)
+ break
+ case "querysnap":
+ on_query_snap(socket, arg[0], arg[1], arg[2])
+ break
+ case "query":
+ on_query(socket, arg[0], arg[1])
+ break
+ default:
+ send_message(socket, "error", "Invalid server command: " + cmd)
+ break
}
}
diff --git a/views/head.pug b/views/head.pug
index 17edf02..8e5a0fe 100644
--- a/views/head.pug
+++ b/views/head.pug
@@ -60,7 +60,7 @@ mixin gamelist(list,hide_title=0)
let pace_icon = ""
let pace_text = ""
let chat_icon = ""
- if (item.your_turn || item.is_unseen || item.is_unread) className += " your_turn"
+ if (item.your_turn || item.is_unseen) className += " your_turn"
if (item.status === 0 && item.join_count === 0) className += " open replacement"
else if (item.status === 0 && item.join_count !== item.player_count) className += " open"
else if (item.status === 0 && item.join_count === item.player_count) className += " ready"
@@ -68,8 +68,7 @@ mixin gamelist(list,hide_title=0)
else if (item.status === 1 && item.join_count === item.player_count) className += " active"
else if (item.status === 2) className += " finished"
else if (item.status === 3) className += " archived"
- if (item.is_unread) chat_icon = "\u{1f4dd}"
- if (item.is_unseen) chat_icon = "\u{2728}"
+ if (item.is_unread) { chat_icon = "\u{1f4dd}"; className += " unread" }
if (item.is_private) pace_icon += EMOJI_PRIVATE
if (item.is_match)
pace_icon += EMOJI_MATCH