From: Ian Jackson Date: Sun, 3 Jan 2021 10:54:09 +0000 (+0000) Subject: wip links - does not compile X-Git-Tag: otter-0.2.0~41 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=ce55a0ee42a4aa330c32b9cd21729f9ecef1e449;p=otter.git wip links - does not compile Signed-off-by: Ian Jackson --- diff --git a/daemon/cmdlistener.rs b/daemon/cmdlistener.rs index 5a397c20..3a3bc05b 100644 --- a/daemon/cmdlistener.rs +++ b/daemon/cmdlistener.rs @@ -433,7 +433,11 @@ fn execute_game_insn<'cs, 'igr, 'ig: 'igr>( } ).collect::,ME>>()?; let table_size = ig.gs.table_size; - let info = MgmtGameResponseGameInfo { table_size, players }; + let links = ig.links.iter().filter_map( + |(k,v)| + Some((k.clone(), v.as_ref()?.clone().0)) + ).collect(); + let info = MgmtGameResponseGameInfo { table_size, players, links }; Ok(Resp::Info(info)) })?, diff --git a/daemon/session.rs b/daemon/session.rs index fabce96a..3f740651 100644 --- a/daemon/session.rs +++ b/daemon/session.rs @@ -187,7 +187,8 @@ fn session_inner(form : Json, nick : gpl.nick.clone(), sse_url_prefix, ptoken: form.ptoken.clone(), - links: ig.links.iter().map(|(k,v)| (k.clone(), v.clone())).collect(), + links: ig.links.iter() + .filter_map(|(k,v)| Some((k.clone(), v.clone()?))).collect(), load : serde_json::to_string(&DataLoad { players: load_players, last_log_ts: timestamp_abbrev.unwrap_or_default(), diff --git a/src/bin/otter.rs b/src/bin/otter.rs index 79a6dccc..cc963288 100644 --- a/src/bin/otter.rs +++ b/src/bin/otter.rs @@ -651,6 +651,7 @@ fn setup_table(_ma: &MainOpts, spec: &TableSpec) -> Vec { let mut insns = vec![]; insns.push(MGI::ClearLog); insns.push(MGI::SetACL { acl }); + insns.push(MGI::SetLinks(links.clone())); insns } @@ -880,13 +881,14 @@ mod set_link { }, Some(url) => { + let kind = args.kind.unwrap(); chan.alter_game(vec![ if url == "" { - MGI::SetLink { kind: args.kind, url } + MGI::SetLink { kind, url } } else { - MGI::RemoveLink { kind: args.kind } + MGI::RemoveLink { kind } } - ])?; + ], None)?; }, } }