fix: reduce unsafe unwrap
This commit is contained in:
parent
30f9f1a021
commit
3242efb1a2
@ -1,10 +1,9 @@
|
|||||||
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 {
|
|||||||
|
|
||||||
/// restore timer
|
/// restore timer
|
||||||
pub fn restore(&mut self) -> Result<()> {
|
pub fn restore(&mut self) -> Result<()> {
|
||||||
log_if_err!(self.refresh());
|
self.refresh()?;
|
||||||
let profiles = self.core.as_ref().unwrap().profiles.lock();
|
|
||||||
let cur_timestamp = SystemTime::now()
|
|
||||||
.duration_since(UNIX_EPOCH)
|
|
||||||
.unwrap()
|
|
||||||
.as_secs() as usize;
|
|
||||||
|
|
||||||
for item in profiles.get_items().unwrap() {
|
let cur_timestamp = get_now(); // seconds
|
||||||
// if current_time - last_update_time >= interval, cron job should execute immediately.
|
let profiles = self.core.as_ref().unwrap().profiles.lock();
|
||||||
if cur_timestamp - item.updated.unwrap()
|
|
||||||
>= item
|
profiles
|
||||||
.option
|
.get_items()
|
||||||
.as_ref()
|
.unwrap_or(&vec![])
|
||||||
.unwrap()
|
.iter()
|
||||||
.update_interval
|
.filter(|item| item.uid.is_some() && item.updated.is_some() && item.option.is_some())
|
||||||
.unwrap_or(0xffffffff)
|
.filter(|item| {
|
||||||
.mul(60) // minute to secs
|
// mins to seconds
|
||||||
.try_into()
|
let interval = item.option.as_ref().unwrap().update_interval.unwrap_or(0) as usize * 60;
|
||||||
.unwrap()
|
let updated = item.updated.unwrap();
|
||||||
{
|
return interval > 0 && cur_timestamp - updated >= interval;
|
||||||
let (task_id, _) = self
|
})
|
||||||
.timer_map
|
.for_each(|item| {
|
||||||
.get(&item.uid.as_ref().unwrap().clone())
|
let uid = item.uid.as_ref().unwrap();
|
||||||
.unwrap();
|
if let Some((task_id, _)) = self.timer_map.get(uid) {
|
||||||
log_if_err!(self.delay_timer.advance_task(*task_id));
|
log_if_err!(self.delay_timer.advance_task(*task_id));
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user