fix: change the way sessions are sorted (#1347)
* chore: add TODO comment * feat: change the sort method to mtime
This commit is contained in:
parent
e558c46e3e
commit
510964ecbc
2 changed files with 9 additions and 12 deletions
|
|
@ -2,8 +2,8 @@ use crate::install::populate_data_dir;
|
|||
use crate::sessions::kill_session as kill_session_impl;
|
||||
use crate::sessions::{
|
||||
assert_session, assert_session_ne, get_active_session, get_sessions,
|
||||
get_sessions_sorted_by_creation_date, print_sessions, print_sessions_with_index,
|
||||
session_exists, ActiveSession,
|
||||
get_sessions_sorted_by_mtime, print_sessions, print_sessions_with_index, session_exists,
|
||||
ActiveSession,
|
||||
};
|
||||
use dialoguer::Confirm;
|
||||
use std::path::PathBuf;
|
||||
|
|
@ -114,7 +114,7 @@ fn find_indexed_session(
|
|||
|
||||
fn attach_with_session_index(config_options: Options, index: usize, create: bool) -> ClientInfo {
|
||||
// Ignore the session_name when `--index` is provided
|
||||
match get_sessions_sorted_by_creation_date() {
|
||||
match get_sessions_sorted_by_mtime() {
|
||||
Ok(sessions) if sessions.is_empty() => {
|
||||
if create {
|
||||
create_new_client()
|
||||
|
|
|
|||
|
|
@ -27,24 +27,21 @@ pub(crate) fn get_sessions() -> Result<Vec<String>, io::ErrorKind> {
|
|||
}
|
||||
}
|
||||
|
||||
pub(crate) fn get_sessions_sorted_by_creation_date() -> anyhow::Result<Vec<String>> {
|
||||
pub(crate) fn get_sessions_sorted_by_mtime() -> anyhow::Result<Vec<String>> {
|
||||
match fs::read_dir(&*ZELLIJ_SOCK_DIR) {
|
||||
Ok(files) => {
|
||||
let mut sessions_with_creation_date: Vec<(String, SystemTime)> = Vec::new();
|
||||
let mut sessions_with_mtime: Vec<(String, SystemTime)> = Vec::new();
|
||||
for file in files {
|
||||
let file = file?;
|
||||
let file_name = file.file_name().into_string().unwrap();
|
||||
let file_created_at = file.metadata()?.created()?;
|
||||
let file_modified_at = file.metadata()?.modified()?;
|
||||
if file.file_type()?.is_socket() && assert_socket(&file_name) {
|
||||
sessions_with_creation_date.push((file_name, file_created_at));
|
||||
sessions_with_mtime.push((file_name, file_modified_at));
|
||||
}
|
||||
}
|
||||
sessions_with_creation_date.sort_by_key(|x| x.1); // the oldest one will be the first
|
||||
sessions_with_mtime.sort_by_key(|x| x.1); // the oldest one will be the first
|
||||
|
||||
let sessions = sessions_with_creation_date
|
||||
.iter()
|
||||
.map(|x| x.0.clone())
|
||||
.collect();
|
||||
let sessions = sessions_with_mtime.iter().map(|x| x.0.clone()).collect();
|
||||
Ok(sessions)
|
||||
}
|
||||
Err(err) if io::ErrorKind::NotFound != err.kind() => Err(err.into()),
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue