Skip to content

Commit

Permalink
Merge pull request #139 from RickyDane/premaster
Browse files Browse the repository at this point in the history
Premaster
  • Loading branch information
RickyDane authored Nov 3, 2024
2 parents c1beece + 7e73fa8 commit e425766
Show file tree
Hide file tree
Showing 6 changed files with 245 additions and 155 deletions.
47 changes: 32 additions & 15 deletions src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -584,7 +584,12 @@ async fn go_to_dir(directory: u8) -> Vec<FDir> {

// :ftp
#[tauri::command]
async fn mount_sshfs(hostname: String, username: String, password: String, remote_path: String) -> String {
async fn mount_sshfs(
hostname: String,
username: String,
password: String,
remote_path: String,
) -> String {
let remote_address = format!("{}@{}:{}", username, hostname, remote_path);

let mount_point = "/tmp/codriver-sshfs-mount/".to_owned() + &username;
Expand Down Expand Up @@ -653,7 +658,8 @@ async fn open_in_terminal(path: String) -> bool {
// Fallback to cmd
return Command::new("cmd")
.args(&["/c", "start", "cmd.exe", "/k", "cd", "/d", &path])
.spawn().is_ok();
.spawn()
.is_ok();
}

#[cfg(target_os = "macos")]
Expand Down Expand Up @@ -755,6 +761,7 @@ async fn search_for(
unsafe { COUNT_CALLED_BACK }
));
},
&app_window,
);

unsafe {
Expand All @@ -769,6 +776,7 @@ async fn search_for(
let _ = app_window.eval("setTimeout(() => $('.file-searching-done').html(''), 1500)");
let _ = app_window
.eval("setTimeout(() => $('.searching-info-container').css('display', 'none'), 1500)");
let _ = app_window.eval("stopFullSearch()");
dbg_log(format!("Search took: {:?}", sw.elapsed()));
return;
}
Expand Down Expand Up @@ -1796,7 +1804,11 @@ async fn get_thumbnail(image_path: String) -> String {
}

#[tauri::command]
async fn get_simple_dir_info(path: String, app_window: Window, class_to_fill: String) -> SimpleDirInfo {
async fn get_simple_dir_info(
path: String,
app_window: Window,
class_to_fill: String,
) -> SimpleDirInfo {
unsafe {
CALCED_SIZE = 0;
}
Expand All @@ -1814,16 +1826,18 @@ fn dir_info(path: String, app_window: &Window, class_to_fill: String) -> SimpleD
if PathBuf::from(&path).is_file() {
return SimpleDirInfo {
size: PathBuf::from(&path).metadata().unwrap().len(),
count_elements: 1
count_elements: 1,
};
}

let entry = match fs::read_dir(path) {
Ok(entry) => entry,
Err(_) => return SimpleDirInfo {
size: 0,
count_elements: 0
},
Err(_) => {
return SimpleDirInfo {
size: 0,
count_elements: 0,
}
}
};
let mut size = 0;
let mut count_elements = 0;
Expand All @@ -1841,15 +1855,16 @@ fn dir_info(path: String, app_window: &Window, class_to_fill: String) -> SimpleD
entry.path().to_string_lossy().to_string(),
app_window,
class_to_fill.clone(),
).size;
)
.size;
size += dir_size;
}
count_elements += 1;
}
}
SimpleDirInfo {
size,
count_elements
count_elements,
}
}

Expand Down Expand Up @@ -1908,9 +1923,7 @@ async fn log(log: String) {

#[tauri::command]
async fn unmount_network_drive(path: String) {
let _ = Command::new("umount")
.arg(&path)
.spawn();
let _ = Command::new("umount").arg(&path).spawn();
dbg_log(format!("Unmounted: {}", path));
let remove = remove_dir(&path);
if remove.is_err() {
Expand All @@ -1922,10 +1935,14 @@ async fn unmount_network_drive(path: String) {
std::thread::sleep(std::time::Duration::from_millis(1000));
let remove3 = remove_dir(&path);
if remove3.is_err() {
dbg_log(format!("Failed to remove: {} | Err: {}", path, remove3.err().unwrap()));
dbg_log(format!(
"Failed to remove: {} | Err: {}",
path,
remove3.err().unwrap()
));
return;
}
}
}
dbg_log(format!("Removed: {}", path));
}
}
72 changes: 52 additions & 20 deletions src-tauri/src/utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ use chrono::prelude::*;
use color_print::cprintln;
use regex::Regex;
use serde::Serialize;
use sysinfo::System;
use std::{
ffi::OsStr,
fmt::Debug,
fs::{self, File},
io::{BufReader, BufWriter, Read, Write},
};
use stopwatch::Stopwatch;
use sysinfo::System;
use tar::Archive as TarArchive;
use tauri::Window;

Expand Down Expand Up @@ -287,7 +287,8 @@ impl DirWalker {
max_items: i32,
is_quick_search: bool,
file_content: String,
callback: &impl Fn(DirWalkerEntry)
callback: &impl Fn(DirWalkerEntry),
app_window: &Window,
) {
let reg_exp: Regex;

Expand All @@ -298,7 +299,9 @@ impl DirWalker {
}

for entry in jwalk::WalkDir::new(path)
.parallelism(jwalk::Parallelism::RayonNewPool(System::new().physical_core_count().unwrap_or(4) - 2))
.parallelism(jwalk::Parallelism::RayonNewPool(
System::new().physical_core_count().unwrap_or(4) - 1,
))
.sort(true)
.min_depth(1)
.max_depth(depth as usize)
Expand Down Expand Up @@ -342,16 +345,34 @@ impl DirWalker {

let last_mod: DateTime<Utc> = file_metadata.unwrap().modified().unwrap().into();

if !reg_exp.is_match(&name) {
continue;
}

app_window
.eval(
format!(
"document.querySelector('.fullsearch-current-file').innerHTML = '{} ({})'",
name,
format_bytes(fs::metadata(&path).unwrap().len())
)
.as_str(),
)
.unwrap();

println!("{}: is match {}", name, reg_exp.is_match(&name));

if reg_exp.is_match(&name)
&& (self.exts.len() > 0 && self.exts.contains(&item_ext)
|| path.is_file() && self.exts.len() == 0
|| is_quick_search)
{
// Search for file content
if !file_content.is_empty() {
let content = fs::read_to_string(&path).unwrap();
// Extend with line number later on
let content = fs::read_to_string(&path).unwrap_or_else(|_| "".into());
// Extend with line number of text occurence later on
if content.contains(&file_content) {
dbg_log(format!("File found with file_content: {}", &name));
callback(DirWalkerEntry {
name,
path: path.to_string_lossy().to_string(),
Expand All @@ -362,20 +383,20 @@ impl DirWalker {
last_modified: format!("{:?}", last_mod),
size: fs::metadata(&path).unwrap().len(),
});
return;
}
} else {
// Search w/o file content
callback(DirWalkerEntry {
name,
path: path.to_string_lossy().to_string(),
depth,
is_dir: path.is_dir(),
is_file: path.is_file(),
extension: item_ext,
last_modified: format!("{:?}", last_mod),
size: fs::metadata(&path).unwrap().len(),
});
}
// Search w/o file content
callback(DirWalkerEntry {
name,
path: path.to_string_lossy().to_string(),
depth,
is_dir: path.is_dir(),
is_file: path.is_file(),
extension: item_ext,
last_modified: format!("{:?}", last_mod),
size: fs::metadata(&path).unwrap().len(),
});
}
}
}
Expand Down Expand Up @@ -443,12 +464,23 @@ pub fn unpack_tar(file: File) {
}
}

pub fn create_new_action(app_window: &Window, action_name: String, action_desc: String, path: &String) -> String {
pub fn create_new_action(
app_window: &Window,
action_name: String,
action_desc: String,
path: &String,
) -> String {
let id = uuid::Uuid::new_v4().to_string();
let _ = app_window.eval(format!("createNewAction('{}', '{}', '{}', '{}')", id, action_name, action_desc, path).as_str());
let _ = app_window.eval(
format!(
"createNewAction('{}', '{}', '{}', '{}')",
id, action_name, action_desc, path
)
.as_str(),
);
return id;
}

pub fn remove_action(app_window: Window, action_id: String) {
let _ = app_window.eval(format!("removeAction('{}')", action_id).as_str());
}
}
6 changes: 3 additions & 3 deletions src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
},
"package": {
"productName": "CoDriver",
"version": "0.4.85"
"version": "0.4.86"
},
"tauri": {
"updater": {
Expand Down Expand Up @@ -147,10 +147,10 @@
"decorations": true,
"fullscreen": false,
"transparent": true,
"height": 750,
"height": 550,
"resizable": true,
"title": "CoDriver",
"width": 1350,
"width": 1050,
"hiddenTitle": true,
"titleBarStyle": "Overlay"
}
Expand Down
29 changes: 18 additions & 11 deletions ui/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -206,9 +206,9 @@ <h3 class="settings-ui-headline">Extra options</h3>
</div>
<div class="popup-body-col-section">
<p class="text-2">File content</p>
<input
<input
class="full-dualpane-search-file-content-input trigger-for-full-search text-input"
type="text" placeholder="A long time ago in a galaxy far, far away ..." />
type="text" placeholder="A long, long time ago in a galaxy far far away..." />
</div>
<div class="popup-body-col-section">
<p class="text-2">Max count of search results (0 = off)</p>
Expand All @@ -224,15 +224,22 @@ <h3 class="settings-ui-headline">Extra options</h3>
</div>
</div>
<div class="popup-controls">
<button class="icon-button" onclick="closeFullSearchContainer()">
<div class="button-icon"><i class="fa-solid fa-ban"></i></div>
Close
</button>
<button class="fullsearch-search-button icon-button">
<div class="button-icon"><i class="fa-solid fa-magnifying-glass"></i></div>
Start
<div class="fullsearch-loader preloader-small-invert" style="display: none;"></div>
</button>
<!-- show current file which is being searched -->
<div style="width: 50%; display: flex; align-items: center; gap: 15px; margin-left: 10px;">
<div class="preloader-small-invert full-searching-loader" style="display: none;"></div>
<p class="text-2 warbing-text fullsearch-current-file"></p>
</div>
<div style="width: 50%; display: flex; flex-flow: row; gap: 5px; justify-content: flex-end;">
<button class="icon-button" onclick="closeFullSearchContainer()">
<div class="button-icon"><i class="fa-solid fa-ban"></i></div>
Close
</button>
<button class="fullsearch-search-button icon-button" onclick="startFullSearch()">
<div class="button-icon"><i class="fa-solid fa-magnifying-glass"></i></div>
Start
<div class="fullsearch-loader preloader-small-invert" style="display: none;"></div>
</button>
</div>
</div>
</div>

Expand Down
Loading

0 comments on commit e425766

Please sign in to comment.