diff options
71 files changed, 2119 insertions, 3264 deletions
diff --git a/default-plugins/strider/src/main.rs b/default-plugins/strider/src/main.rs index 598bf61d4..2e06240af 100644 --- a/default-plugins/strider/src/main.rs +++ b/default-plugins/strider/src/main.rs @@ -1,49 +1,22 @@ -mod search; mod state; use colored::*; -use search::{FileContentsWorker, FileNameWorker, MessageToSearch, ResultsOfSearch}; -use serde::{Deserialize, Serialize}; -use serde_json; use state::{refresh_directory, FsEntry, State}; use std::collections::BTreeMap; use std::{cmp::min, time::Instant}; use zellij_tile::prelude::*; register_plugin!(State); -register_worker!(FileNameWorker, file_name_search_worker, FILE_NAME_WORKER); -register_worker!( - FileContentsWorker, - file_contents_search_worker, - FILE_CONTENTS_WORKER -); impl ZellijPlugin for State { fn load(&mut self, _configuration: BTreeMap<String, String>) { refresh_directory(self); - self.search_state.loading = true; subscribe(&[ EventType::Key, EventType::Mouse, EventType::CustomMessage, EventType::Timer, - EventType::FileSystemCreate, - EventType::FileSystemUpdate, - EventType::FileSystemDelete, - EventType::PermissionRequestResult, ]); - post_message_to(PluginMessage { - worker_name: Some("file_name_search".into()), - name: serde_json::to_string(&MessageToSearch::ScanFolder).unwrap(), - payload: "".into(), - }); - post_message_to(PluginMessage { - worker_name: Some("file_contents_search".into()), - name: serde_json::to_string(&MessageToSearch::ScanFolder).unwrap(), - payload: "".into(), - }); - self.search_state.loading = true; - set_timeout(0.5); // for displaying loading animation } fn update(&mut self, event: Event) -> bool { @@ -55,58 +28,8 @@ impl ZellijPlugin for State { }; self.ev_history.push_back((event.clone(), Instant::now())); match event { - Event::PermissionRequestResult(_) => { - should_render = true; - }, - Event::Timer(_elapsed) => { - if self.search_state.loading { - set_timeout(0.5); - self.search_state.progress_animation(); - should_render = true; - } - }, - Event::CustomMessage(message, payload) => match serde_json::from_str(&message) { - Ok(MessageToPlugin::UpdateFileNameSearchResults) => { - if let Ok(results_of_search) = serde_json::from_str::<ResultsOfSearch>(&payload) - { - self.search_state - .update_file_name_search_results(results_of_search); - should_render = true; - } - }, - Ok(MessageToPlugin::UpdateFileContentsSearchResults) => { - if let Ok(results_of_search) = serde_json::from_str::<ResultsOfSearch>(&payload) - { - self.search_state - .update_file_contents_search_results(results_of_search); - should_render = true; - } - }, - Ok(MessageToPlugin::DoneScanningFolder) => { - self.search_state.loading = false; - should_render = true; - }, - Err(e) => eprintln!("Failed to deserialize custom message: {:?}", e), - }, Event::Key(key) => match key { - Key::Esc if self.typing_search_term() => { - if self.search_state.search_term.is_empty() { - self.stop_typing_search_term(); - } else { - self.search_state.handle_key(key); - } - should_render = true; - }, - _ if self.typing_search_term() => { - self.search_state.handle_key(key); - should_render = true; - }, - Key::Char('/') => { - self.start_typing_search_term(); - should_render = true; - }, Key::Esc => { - self.stop_typing_search_term(); hide_self(); should_render = true; }, @@ -190,54 +113,6 @@ impl ZellijPlugin for State { }, _ => {}, }, - Event::FileSystemCreate(paths) => { - let paths: Vec<String> = paths - .iter() - .map(|p| p.to_string_lossy().to_string()) - .collect(); - post_message_to(PluginMessage { - worker_name: Some("file_name_search".into()), - name: serde_json::to_string(&MessageToSearch::FileSystemCreate).unwrap(), - payload: serde_json::to_string(&paths).unwrap(), - }); - post_message_to(PluginMessage { - worker_name: Some("file_contents_search".into()), - name: serde_json::to_string(&MessageToSearch::FileSystemCreate).unwrap(), - payload: serde_json::to_string(&paths).unwrap(), - }); - }, - Event::FileSystemUpdate(paths) => { - let paths |