// 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};
*ag.0 = Some(accounts);
}
-impl AccountRecord {
- pub fn expire_tokens_revealed(&mut self) {
- panic!("xxx")
- }
-}
-
//---------- acl handling ----------
pub mod loaded_acl {
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)),
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,
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)