use crate::{settings::Settings, SETTINGS};
pub fn init(settings: Settings) -> Result<(), String> {
SETTINGS.set(Some(settings));
init_rng();
Ok(())
}
fn init_rng() {
use crate::RNG;
use candid::Principal;
use rand_chacha::{rand_core::SeedableRng, ChaCha20Rng};
use std::time::Duration;
ic_cdk_timers::set_timer(Duration::ZERO, || {
ic_cdk::spawn(async {
let (seed,): ([u8; 32],) =
ic_cdk::call(Principal::management_canister(), "raw_rand", ())
.await
.unwrap();
RNG.with_borrow_mut(|rng| *rng = Some(ChaCha20Rng::from_seed(seed)));
})
});
}