Skip to content
Snippets Groups Projects
Unverified Commit 3242efb1 authored by GyDi's avatar GyDi Committed by GitHub
Browse files

fix: reduce unsafe unwrap

parent 30f9f1a0
No related branches found
No related tags found
No related merge requests found
use super::Core; use super::Core;
use crate::log_if_err; use crate::log_if_err;
use crate::utils::help::get_now;
use anyhow::{bail, Context, Result}; use anyhow::{bail, Context, Result};
use delay_timer::prelude::{DelayTimer, DelayTimerBuilder, TaskBuilder}; use delay_timer::prelude::{DelayTimer, DelayTimerBuilder, TaskBuilder};
use std::collections::HashMap; use std::collections::HashMap;
use std::ops::Mul;
use std::time::{SystemTime, UNIX_EPOCH};
type TaskID = u64; type TaskID = u64;
...@@ -67,33 +66,29 @@ impl Timer { ...@@ -67,33 +66,29 @@ impl Timer {
/// restore timer /// restore timer
pub fn restore(&mut self) -> Result<()> { pub fn restore(&mut self) -> Result<()> {
log_if_err!(self.refresh()); self.refresh()?;
let cur_timestamp = get_now(); // seconds
let profiles = self.core.as_ref().unwrap().profiles.lock(); let profiles = self.core.as_ref().unwrap().profiles.lock();
let cur_timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH) profiles
.unwrap() .get_items()
.as_secs() as usize; .unwrap_or(&vec![])
.iter()
for item in profiles.get_items().unwrap() { .filter(|item| item.uid.is_some() && item.updated.is_some() && item.option.is_some())
// if current_time - last_update_time >= interval, cron job should execute immediately. .filter(|item| {
if cur_timestamp - item.updated.unwrap() // mins to seconds
>= item let interval = item.option.as_ref().unwrap().update_interval.unwrap_or(0) as usize * 60;
.option let updated = item.updated.unwrap();
.as_ref() return interval > 0 && cur_timestamp - updated >= interval;
.unwrap() })
.update_interval .for_each(|item| {
.unwrap_or(0xffffffff) let uid = item.uid.as_ref().unwrap();
.mul(60) // minute to secs if let Some((task_id, _)) = self.timer_map.get(uid) {
.try_into() log_if_err!(self.delay_timer.advance_task(*task_id));
.unwrap() }
{ });
let (task_id, _) = self
.timer_map
.get(&item.uid.as_ref().unwrap().clone())
.unwrap();
log_if_err!(self.delay_timer.advance_task(*task_id));
}
}
Ok(()) Ok(())
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment