feat: add search window (NIP-50) (#181)
* feat: add search window * chore: improve search ui
This commit is contained in:
@@ -57,11 +57,11 @@ fn main() {
|
||||
client
|
||||
.add_relay("wss://relayable.org")
|
||||
.await
|
||||
.expect("Cannot connect to relay.nostr.band, please try again later.");
|
||||
.expect("Cannot connect to relayable.org, please try again later.");
|
||||
client
|
||||
.add_relay("wss://relay.damus.io")
|
||||
.add_relay("wss://relay.nostr.band")
|
||||
.await
|
||||
.expect("Cannot connect to relay.damus.io, please try again later.");
|
||||
.expect("Cannot connect to relay.nostr.band, please try again later.");
|
||||
|
||||
// Connect
|
||||
client.connect().await;
|
||||
@@ -129,6 +129,7 @@ fn main() {
|
||||
nostr::event::get_event_thread,
|
||||
nostr::event::publish,
|
||||
nostr::event::repost,
|
||||
nostr::event::search,
|
||||
commands::folder::show_in_folder,
|
||||
commands::folder::get_accounts,
|
||||
commands::opg::fetch_opg,
|
||||
|
||||
@@ -221,3 +221,26 @@ pub async fn repost(raw: &str, state: State<'_, Nostr>) -> Result<EventId, Strin
|
||||
Err("Repost failed".into())
|
||||
}
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub async fn search(
|
||||
content: &str,
|
||||
limit: usize,
|
||||
state: State<'_, Nostr>,
|
||||
) -> Result<Vec<Event>, String> {
|
||||
println!("search: {}", content);
|
||||
|
||||
let client = &state.client;
|
||||
let filter = Filter::new()
|
||||
.kinds(vec![Kind::TextNote, Kind::Metadata])
|
||||
.search(content)
|
||||
.limit(limit);
|
||||
|
||||
match client
|
||||
.get_events_of(vec![filter], Some(Duration::from_secs(15)))
|
||||
.await
|
||||
{
|
||||
Ok(events) => Ok(events),
|
||||
Err(err) => Err(err.to_string()),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
||||
let menu = tauri::menu::MenuBuilder::new(app)
|
||||
.item(&tauri::menu::MenuItem::with_id(app, "open", "Open Lume", true, None::<&str>).unwrap())
|
||||
.item(&tauri::menu::MenuItem::with_id(app, "editor", "New Post", true, Some("cmd+n")).unwrap())
|
||||
.item(&tauri::menu::MenuItem::with_id(app, "search", "Search", true, Some("cmd+k")).unwrap())
|
||||
.separator()
|
||||
.item(
|
||||
&tauri::menu::MenuItem::with_id(
|
||||
@@ -29,6 +30,7 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
||||
.item(
|
||||
&tauri::menu::MenuItem::with_id(app, "settings", "Settings...", true, Some("cmd+,")).unwrap(),
|
||||
)
|
||||
.separator()
|
||||
.item(&tauri::menu::MenuItem::with_id(app, "quit", "Quit", true, None::<&str>).unwrap())
|
||||
.build()
|
||||
.unwrap();
|
||||
@@ -74,6 +76,34 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
"search" => {
|
||||
if let Some(window) = app.get_window("search") {
|
||||
if window.is_visible().unwrap_or_default() {
|
||||
let _ = window.set_focus();
|
||||
} else {
|
||||
let _ = window.show();
|
||||
let _ = window.set_focus();
|
||||
};
|
||||
} else {
|
||||
#[cfg(target_os = "macos")]
|
||||
let _ = WebviewWindowBuilder::new(app, "search", WebviewUrl::App(PathBuf::from("search")))
|
||||
.title("Editor")
|
||||
.inner_size(750., 470.)
|
||||
.minimizable(false)
|
||||
.resizable(false)
|
||||
.title_bar_style(TitleBarStyle::Overlay)
|
||||
.build()
|
||||
.unwrap();
|
||||
#[cfg(not(target_os = "macos"))]
|
||||
let _ = WebviewWindowBuilder::new(app, "Search", WebviewUrl::App(PathBuf::from("search")))
|
||||
.title("Search")
|
||||
.inner_size(750., 470.)
|
||||
.minimizable(false)
|
||||
.resizable(false)
|
||||
.build()
|
||||
.unwrap();
|
||||
}
|
||||
}
|
||||
"about" => {
|
||||
app.shell().open("https://lume.nu", None).unwrap();
|
||||
}
|
||||
@@ -97,7 +127,6 @@ pub fn create_tray<R: Runtime>(app: &tauri::AppHandle<R>) -> tauri::Result<()> {
|
||||
)
|
||||
.title("Settings")
|
||||
.inner_size(800., 500.)
|
||||
.hidden_title(true)
|
||||
.title_bar_style(TitleBarStyle::Overlay)
|
||||
.resizable(false)
|
||||
.minimizable(false)
|
||||
|
||||
Reference in New Issue
Block a user