From: Ian Jackson Date: Thu, 12 Nov 2020 21:48:18 +0000 (+0000) Subject: token handling fixes X-Git-Tag: otter-0.2.0~533 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=4bf1b172a0aba9baa59a011968f89e3adaecfae8;p=otter.git token handling fixes Signed-off-by: Ian Jackson --- diff --git a/src/accounts.rs b/src/accounts.rs index d7003090..e90c6b43 100644 --- a/src/accounts.rs +++ b/src/accounts.rs @@ -2,9 +2,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later // There is NO WARRANTY. -// xxx load, incl reveleation expiry -// xxx periodic token reveleation expiry - use crate::imports::*; use parking_lot::{Mutex, const_mutex, MutexGuard}; @@ -426,12 +423,6 @@ pub fn load_accounts() { *ag.0 = Some(accounts); } -impl AccountRecord { - pub fn expire_tokens_revealed(&mut self) { - panic!("xxx") - } -} - //---------- acl handling ---------- pub mod loaded_acl { diff --git a/src/cmdlistener.rs b/src/cmdlistener.rs index df56424a..30a54b6c 100644 --- a/src/cmdlistener.rs +++ b/src/cmdlistener.rs @@ -489,6 +489,16 @@ fn execute_game_insn<'cs, 'igr, 'ig : 'igr>( let ag = AccountsGuard::lock(); let (ig, _) = cs.check_acl(&ag, ig, PCH::Instance, &[TP::Super])?; ig.gs.log.clear(); + for ipr in ig.iplayers.values_mut() { + // todo: do this only if there are no hidden pieces? + let tr = &mut ipr.ipl.tokens_revealed; + let latest = tr.values() + .map(|trv| trv.latest) + .max(); + if let Some(latest) = latest { + tr.retain(|_k, v| v.latest >= latest); + } + } (U{ pcs: vec![ ], log: vec![ LogEntry { html: Html(format!("{} cleared the log", &who)), diff --git a/src/global.rs b/src/global.rs index 1b09cdc2..49b68e59 100644 --- a/src/global.rs +++ b/src/global.rs @@ -653,8 +653,6 @@ impl<'ig> InstanceGuard<'ig> { account: (*acct.account).clone(), desc, }; - // xxx show tokens revealed when joining game - // xxx clear tokens revealed when logs is cleared self.iplayers.byid_mut(player)?.ipl.tokens_revealed.entry(revk) .or_insert(TokenRevelationValue { latest: now, diff --git a/src/session.rs b/src/session.rs index 50895941..b4a4f5c1 100644 --- a/src/session.rs +++ b/src/session.rs @@ -143,7 +143,7 @@ fn session(form : Json) -> Result { load : serde_json::to_string(&DataLoad { players : load_players, }).map_err(|e| InternalError::JSONEncode(e))?, - // xxx show account accesses + // xxx show token revelations accesses }; trace!("SessionRenderContext {:?}", &src); (src, client)