Skip to content

Commit

Permalink
Fix datetime sorting
Browse files Browse the repository at this point in the history
  • Loading branch information
alanvardy committed Jun 18, 2024
1 parent 985edfe commit 6c98b7c
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## Unreleased (on main branch only)

- Fix datetime sorting

## 2024-06-09 v0.6.9

- Add `list timebox`
Expand Down
19 changes: 15 additions & 4 deletions src/tasks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,18 @@ impl Task {
fn datetime(&self, config: &Config) -> Option<DateTime<Tz>> {
match self.datetimeinfo(config) {
Ok(DateTimeInfo::DateTime { datetime, .. }) => Some(datetime),
_ => None,
Ok(DateTimeInfo::Date { date, .. }) => {
let naive_datetime = date.and_hms_opt(23, 59, 00)?;

let now = time::now(config).ok()?;

Some(DateTime::from_naive_utc_and_offset(
naive_datetime,
*now.offset(),
))
}
Ok(DateTimeInfo::NoDateTime) => None,
Err(_) => None,
}
}

Expand Down Expand Up @@ -708,7 +719,7 @@ mod tests {
..test::fixtures::task()
};

assert_eq!(task.datetime(&config), None);
assert!(task.datetime(&config).is_some());
}

#[tokio::test]
Expand Down Expand Up @@ -866,12 +877,12 @@ mod tests {

let input = vec![
future.clone(),
past.clone(),
present.clone(),
past.clone(),
no_date.clone(),
date_not_datetime.clone(),
];
let result = vec![no_date, date_not_datetime, past, present, future];
let result = vec![no_date, past, present, date_not_datetime, future];

assert_eq!(sort_by_datetime(input, &config), result);
}
Expand Down

0 comments on commit 6c98b7c

Please sign in to comment.