mirror of
https://github.com/luminous-devs/lume.git
synced 2024-10-02 09:50:47 +00:00
feat: add basic nostr connection
This commit is contained in:
parent
e8bd48e51b
commit
fd393a4d30
3
src-tauri/.gitignore
vendored
3
src-tauri/.gitignore
vendored
@ -1,6 +1,3 @@
|
|||||||
# Generated by Cargo
|
# Generated by Cargo
|
||||||
# will have compiled files and executables
|
# will have compiled files and executables
|
||||||
/target/
|
/target/
|
||||||
|
|
||||||
/bin/depot-*
|
|
||||||
/bin/depot
|
|
886
src-tauri/Cargo.lock
generated
886
src-tauri/Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,9 +1,8 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "lume"
|
name = "lume"
|
||||||
version = "3.0.0"
|
version = "3.0.0"
|
||||||
description = "the communication app"
|
description = "nostr client"
|
||||||
authors = ["Ren Amamiya"]
|
authors = ["npub1zfss807aer0j26mwp2la0ume0jqde3823rmu97ra6sgyyg956e0s6xw445"]
|
||||||
license = "GPL-3.0"
|
|
||||||
repository = "https://github.com/lumehq/lume"
|
repository = "https://github.com/lumehq/lume"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
rust-version = "1.70"
|
rust-version = "1.70"
|
||||||
@ -14,10 +13,12 @@ tauri-build = { version = "2.0.0-alpha", features = [] }
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
nostr = "0.27"
|
nostr = "0.27"
|
||||||
nostr-sdk = "0.27"
|
nostr-sdk = "0.27"
|
||||||
|
nostr-sqlite = "0.27"
|
||||||
tokio = { version = "1", features = ["full"] }
|
tokio = { version = "1", features = ["full"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde = { version = "1.0", features = ["derive"] }
|
serde = { version = "1.0", features = ["derive"] }
|
||||||
tauri = { version = "2.0.0-alpha", features = [ "tray-icon",
|
tauri = { version = "2.0.0-alpha", features = [
|
||||||
|
"tray-icon",
|
||||||
"macos-private-api",
|
"macos-private-api",
|
||||||
"native-tls-vendored",
|
"native-tls-vendored",
|
||||||
"protocol-asset",
|
"protocol-asset",
|
||||||
@ -37,19 +38,15 @@ tauri-plugin-store = "2.0.0-alpha"
|
|||||||
tauri-plugin-upload = "2.0.0-alpha"
|
tauri-plugin-upload = "2.0.0-alpha"
|
||||||
tauri-plugin-window-state = "2.0.0-alpha"
|
tauri-plugin-window-state = "2.0.0-alpha"
|
||||||
tauri-plugin-theme = { git = "https://github.com/wyhaya/tauri-plugin-theme" }
|
tauri-plugin-theme = { git = "https://github.com/wyhaya/tauri-plugin-theme" }
|
||||||
tauri-plugin-sql = {version="2.0.0-alpha", features = [
|
|
||||||
"sqlite",
|
|
||||||
] }
|
|
||||||
sqlx-cli = { version = "0.7.0", default-features = false, features = [
|
|
||||||
"sqlite",
|
|
||||||
] }
|
|
||||||
webpage = { version = "2.0", features = ["serde"] }
|
webpage = { version = "2.0", features = ["serde"] }
|
||||||
|
|
||||||
[target.'cfg(not(target_os = "linux"))'.dependencies]
|
[target.'cfg(not(target_os = "linux"))'.dependencies]
|
||||||
keyring = "2"
|
keyring = "2"
|
||||||
|
|
||||||
[target.'cfg(target_os = "linux")'.dependencies]
|
[target.'cfg(target_os = "linux")'.dependencies]
|
||||||
keyring = { version = "2", default_features = false, features = ["linux-secret-service"] }
|
keyring = { version = "2", default_features = false, features = [
|
||||||
|
"linux-secret-service",
|
||||||
|
] }
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
# by default Tauri runs in production mode
|
# by default Tauri runs in production mode
|
||||||
|
@ -6,33 +6,52 @@
|
|||||||
pub mod commands;
|
pub mod commands;
|
||||||
pub mod nostr;
|
pub mod nostr;
|
||||||
|
|
||||||
|
use nostr_sdk::{Client, ClientBuilder};
|
||||||
|
use nostr_sqlite::SQLiteDatabase;
|
||||||
|
use tauri::Manager;
|
||||||
use tauri_plugin_autostart::MacosLauncher;
|
use tauri_plugin_autostart::MacosLauncher;
|
||||||
use tauri_plugin_sql::{Migration, MigrationKind};
|
|
||||||
use tauri_plugin_theme::ThemePlugin;
|
use tauri_plugin_theme::ThemePlugin;
|
||||||
|
use tokio::sync::Mutex;
|
||||||
|
|
||||||
|
struct NostrClient(Mutex<Client>);
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut ctx = tauri::generate_context!();
|
let mut ctx = tauri::generate_context!();
|
||||||
tauri::Builder::default()
|
tauri::Builder::default()
|
||||||
.setup(|app| {
|
.setup(|app| {
|
||||||
#[cfg(desktop)]
|
let handle = app.handle().clone();
|
||||||
app
|
let config_dir = app.path().app_config_dir().unwrap();
|
||||||
.handle()
|
|
||||||
.plugin(tauri_plugin_updater::Builder::new().build())?;
|
tauri::async_runtime::spawn(async move {
|
||||||
|
// Create database connection
|
||||||
|
let database = SQLiteDatabase::open(config_dir.join("nostr.db"))
|
||||||
|
.await
|
||||||
|
.expect("Open database failed.");
|
||||||
|
|
||||||
|
// Create nostr connection
|
||||||
|
let client = ClientBuilder::default().database(database).build();
|
||||||
|
|
||||||
|
// Add bootstrap relay
|
||||||
|
client
|
||||||
|
.add_relay("wss://nostr.mutinywallet.com")
|
||||||
|
.await
|
||||||
|
.expect("Failed to add bootstrap relay.");
|
||||||
|
|
||||||
|
// Add bootstrap relay
|
||||||
|
client
|
||||||
|
.add_relay("wss://bostr.nokotaro.com")
|
||||||
|
.await
|
||||||
|
.expect("Failed to add bootstrap relay.");
|
||||||
|
|
||||||
|
// Connect
|
||||||
|
client.connect().await;
|
||||||
|
|
||||||
|
// Init global state
|
||||||
|
handle.manage(NostrClient(client.into()))
|
||||||
|
});
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
})
|
})
|
||||||
.plugin(
|
|
||||||
tauri_plugin_sql::Builder::default()
|
|
||||||
.add_migrations(
|
|
||||||
"sqlite:lume_v3.db",
|
|
||||||
vec![Migration {
|
|
||||||
version: 20230418013219,
|
|
||||||
description: "initial data",
|
|
||||||
sql: include_str!("../migrations/20230418013219_initial_data.sql"),
|
|
||||||
kind: MigrationKind::Up,
|
|
||||||
}],
|
|
||||||
)
|
|
||||||
.build(),
|
|
||||||
)
|
|
||||||
.plugin(ThemePlugin::init(ctx.config_mut()))
|
.plugin(ThemePlugin::init(ctx.config_mut()))
|
||||||
.plugin(tauri_plugin_clipboard_manager::init())
|
.plugin(tauri_plugin_clipboard_manager::init())
|
||||||
.plugin(tauri_plugin_dialog::init())
|
.plugin(tauri_plugin_dialog::init())
|
||||||
@ -43,6 +62,7 @@ fn main() {
|
|||||||
.plugin(tauri_plugin_process::init())
|
.plugin(tauri_plugin_process::init())
|
||||||
.plugin(tauri_plugin_shell::init())
|
.plugin(tauri_plugin_shell::init())
|
||||||
.plugin(tauri_plugin_upload::init())
|
.plugin(tauri_plugin_upload::init())
|
||||||
|
.plugin(tauri_plugin_updater::Builder::new().build())
|
||||||
.plugin(tauri_plugin_window_state::Builder::default().build())
|
.plugin(tauri_plugin_window_state::Builder::default().build())
|
||||||
.plugin(tauri_plugin_autostart::init(
|
.plugin(tauri_plugin_autostart::init(
|
||||||
MacosLauncher::LaunchAgent,
|
MacosLauncher::LaunchAgent,
|
||||||
|
Loading…
Reference in New Issue
Block a user