chore: update deps

This commit is contained in:
2024-09-14 08:05:25 +07:00
parent a8e707ae8a
commit 278773433d
10 changed files with 1222 additions and 706 deletions

View File

@@ -15,19 +15,19 @@
"@radix-ui/react-dialog": "^1.1.1",
"@radix-ui/react-progress": "^1.1.0",
"@radix-ui/react-scroll-area": "^1.1.0",
"@tanstack/react-query": "^5.51.23",
"@tanstack/react-router": "^1.48.1",
"@tauri-apps/api": "^2.0.0-rc.1",
"@tauri-apps/plugin-clipboard-manager": "^2.0.0-rc.0",
"@tauri-apps/plugin-dialog": "^2.0.0-rc.0",
"@tauri-apps/plugin-fs": "^2.0.0-rc.1",
"@tauri-apps/plugin-notification": "^2.0.0-rc.0",
"@tauri-apps/plugin-os": "^2.0.0-rc.0",
"@tauri-apps/plugin-process": "^2.0.0-rc.0",
"@tauri-apps/plugin-shell": "^2.0.0-rc.0",
"@tauri-apps/plugin-updater": "^2.0.0-rc.0",
"dayjs": "^1.11.12",
"lru-cache": "^11.0.0",
"@tanstack/react-query": "^5.56.2",
"@tanstack/react-router": "^1.57.13",
"@tauri-apps/api": "2.0.0-rc.4",
"@tauri-apps/plugin-clipboard-manager": "2.0.0-rc.1",
"@tauri-apps/plugin-dialog": "2.0.0-rc.1",
"@tauri-apps/plugin-fs": "2.0.0-rc.2",
"@tauri-apps/plugin-notification": "2.0.0-rc.1",
"@tauri-apps/plugin-os": "2.0.0-rc.1",
"@tauri-apps/plugin-process": "2.0.0-rc.1",
"@tauri-apps/plugin-shell": "2.0.0-rc.1",
"@tauri-apps/plugin-updater": "2.0.0-rc.2",
"dayjs": "^1.11.13",
"lru-cache": "^11.0.1",
"minidenticons": "^4.2.1",
"nostr-tools": "^2.7.2",
"react": "19.0.0-rc-d025ddd3-20240722",
@@ -37,20 +37,20 @@
},
"devDependencies": {
"@biomejs/biome": "1.8.3",
"@tanstack/router-plugin": "^1.47.0",
"@tauri-apps/cli": "^2.0.0-rc.4",
"@tanstack/router-plugin": "^1.57.13",
"@tauri-apps/cli": "2.0.0-rc.13",
"@types/react": "npm:types-react@19.0.0-rc.1",
"@types/react-dom": "npm:types-react-dom@19.0.0-rc.1",
"@vitejs/plugin-react": "^4.3.1",
"autoprefixer": "^10.4.20",
"babel-plugin-react-compiler": "0.0.0-experimental-696af53-20240625",
"clsx": "^2.1.1",
"postcss": "^8.4.41",
"postcss": "^8.4.45",
"tailwind-gradient-mask-image": "^1.2.0",
"tailwind-merge": "^2.5.2",
"tailwindcss": "^3.4.10",
"typescript": "^5.5.4",
"vite": "^5.4.1",
"tailwindcss": "^3.4.11",
"typescript": "^5.6.2",
"vite": "^5.4.5",
"vite-tsconfig-paths": "^4.3.2"
},
"overrides": {

1070
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

614
src-tauri/Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -14,7 +14,7 @@ tauri-build = { version = "2.0.0-rc", features = [] }
[dependencies]
nostr-sdk = { git = "https://github.com/rust-nostr/nostr", features = [
"sqlite",
"lmdb",
] }
tauri = { version = "2.0.0-rc", features = [
"tray-icon",
@@ -32,13 +32,13 @@ tauri-plugin-updater = "2.0.0-rc"
tauri-plugin-process = "2.0.0-rc"
tauri-plugin-fs = "2.0.0-rc"
tauri-plugin-notification = "2.0.0-rc"
tauri-plugin-decorum = "1.0.0"
tauri-plugin-decorum = "1.1.0"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
keyring = { version = "3", features = [
"apple-native",
"windows-native",
"sync-secret-service",
"linux-native",
] }
keyring-search = "1.2.0"
itertools = "0.13.0"

View File

@@ -142,7 +142,7 @@ pub async fn connect_account(uri: String, state: State<'_, Nostr>) -> Result<Str
Ok(bunker_uri) => {
// Local user
let app_keys = Keys::generate();
let app_secret = app_keys.secret_key().to_string();
let app_secret = app_keys.secret_key().to_secret_hex();
// Get remote user
let remote_user = bunker_uri.signer_public_key().unwrap();
@@ -275,7 +275,7 @@ pub async fn login(
{
if let Some(event) = events.into_iter().next() {
let urls = event
.tags()
.tags
.iter()
.filter_map(|tag| {
if let Some(TagStandard::Relay(relay)) = tag.as_standardized() {

View File

@@ -14,7 +14,7 @@ pub async fn get_chats(state: State<'_, Nostr>) -> Result<Vec<String>, String> {
let filter = Filter::new().kind(Kind::PrivateDirectMessage).pubkey(public_key);
match client.database().query(vec![filter], Order::Asc).await {
match client.database().query(vec![filter]).await {
Ok(events) => {
let ev = events
.into_iter()
@@ -44,7 +44,7 @@ pub async fn get_chat_messages(id: String, state: State<'_, Nostr>) -> Result<Ve
let sender_filter =
Filter::new().kind(Kind::PrivateDirectMessage).author(receiver).pubkey(sender);
match client.database().query(vec![recv_filter, sender_filter], Order::Desc).await {
match client.database().query(vec![recv_filter, sender_filter]).await {
Ok(events) => {
let ev = events.into_iter().map(|ev| ev.as_json()).collect::<Vec<_>>();
Ok(ev)

View File

@@ -8,32 +8,6 @@ use tauri::{Manager, State};
use crate::Nostr;
async fn connect_nip65_relays(public_key: PublicKey, client: &Client) -> Vec<String> {
let filter = Filter::new().author(public_key).kind(Kind::RelayList).limit(1);
let mut relay_list: Vec<String> = Vec::new();
if let Ok(events) =
client.get_events_of(vec![filter], EventSource::relays(Some(Duration::from_secs(3)))).await
{
if let Some(event) = events.first() {
for (url, ..) in nip65::extract_relay_list(event) {
let _ = client.add_relay(url).await;
relay_list.push(url.to_string())
}
}
};
relay_list
}
async fn disconnect_nip65_relays(relays: Vec<String>, client: &Client) {
for relay in relays.iter() {
if let Err(e) = client.disconnect_relay(relay).await {
println!("Disconnect failed: {}", e)
}
}
}
#[tauri::command]
#[specta::specta]
pub fn get_bootstrap_relays(app: tauri::AppHandle) -> Result<Vec<String>, String> {
@@ -75,7 +49,7 @@ pub async fn collect_inbox_relays(
Ok(events) => {
if let Some(event) = events.into_iter().next() {
let urls = event
.tags()
.tags
.iter()
.filter_map(|tag| {
if let Some(TagStandard::Relay(relay)) = tag.as_standardized() {

View File

@@ -14,7 +14,6 @@ use std::{
time::Duration,
};
use tauri::{async_runtime::Mutex, Manager};
#[cfg(not(target_os = "linux"))]
use tauri_plugin_decorum::WebviewWindowExt;
use tauri_specta::{collect_commands, Builder};
@@ -74,7 +73,7 @@ fn main() {
let main_window = app.get_webview_window("main").unwrap();
// Set custom decoration
#[cfg(target_os = "windows")]
#[cfg(not(target_os = "macos"))]
main_window.create_overlay_titlebar().unwrap();
// Set traffic light inset
@@ -97,11 +96,13 @@ fn main() {
let (client, bootstrap_relays) = tauri::async_runtime::block_on(async move {
// Create data folder if not exist
let dir = handle.path().app_config_dir().expect("App config directory not found.");
let _ = fs::create_dir_all(dir.clone());
let dir =
handle.path().app_config_dir().expect("Error: config directory not found.");
let _ = fs::create_dir_all(&dir);
// Setup database
let database = SQLiteDatabase::open(dir.join("nostr.db")).await.expect("Error.");
let database = NostrLMDB::open(dir.join("nostr-lmdb"))
.expect("Error: cannot create database.");
// Setup nostr client
let opts = Options::new()
@@ -131,7 +132,7 @@ fn main() {
} else {
RelayOptions::new().write(true).read(false)
};
let _ = client.add_relay_with_opts(relay, opts).await;
let _ = client.pool().add_relay(relay, opts).await;
}
Err(_) => {
println!("Connecting to relay...: {}", relay);

View File

@@ -174,7 +174,7 @@ type __EventObj__<T> = {
once: (
cb: TAURI_API_EVENT.EventCallback<T>,
) => ReturnType<typeof TAURI_API_EVENT.once<T>>;
emit: T extends null
emit: null extends T
? (payload?: T) => ReturnType<typeof TAURI_API_EVENT.emit>
: (payload: T) => ReturnType<typeof TAURI_API_EVENT.emit>;
};

View File

@@ -196,21 +196,140 @@ declare module '@tanstack/react-router' {
// Create and export the route tree
export const routeTree = rootRoute.addChildren({
IndexRoute,
BootstrapRelaysRoute,
NewLazyRoute,
ResetLazyRoute,
AccountContactsRoute,
AccountRelaysRoute,
AuthConnectRoute,
AuthImportRoute,
AuthNewRoute,
AccountChatsLazyRoute: AccountChatsLazyRoute.addChildren({
AccountChatsIdRoute,
AccountChatsNewLazyRoute,
}),
})
interface AccountChatsLazyRouteChildren {
AccountChatsIdRoute: typeof AccountChatsIdRoute
AccountChatsNewLazyRoute: typeof AccountChatsNewLazyRoute
}
const AccountChatsLazyRouteChildren: AccountChatsLazyRouteChildren = {
AccountChatsIdRoute: AccountChatsIdRoute,
AccountChatsNewLazyRoute: AccountChatsNewLazyRoute,
}
const AccountChatsLazyRouteWithChildren =
AccountChatsLazyRoute._addFileChildren(AccountChatsLazyRouteChildren)
export interface FileRoutesByFullPath {
'/': typeof IndexRoute
'/bootstrap-relays': typeof BootstrapRelaysRoute
'/new': typeof NewLazyRoute
'/reset': typeof ResetLazyRoute
'/$account/contacts': typeof AccountContactsRoute
'/$account/relays': typeof AccountRelaysRoute
'/auth/connect': typeof AuthConnectRoute
'/auth/import': typeof AuthImportRoute
'/auth/new': typeof AuthNewRoute
'/$account/chats': typeof AccountChatsLazyRouteWithChildren
'/$account/chats/$id': typeof AccountChatsIdRoute
'/$account/chats/new': typeof AccountChatsNewLazyRoute
}
export interface FileRoutesByTo {
'/': typeof IndexRoute
'/bootstrap-relays': typeof BootstrapRelaysRoute
'/new': typeof NewLazyRoute
'/reset': typeof ResetLazyRoute
'/$account/contacts': typeof AccountContactsRoute
'/$account/relays': typeof AccountRelaysRoute
'/auth/connect': typeof AuthConnectRoute
'/auth/import': typeof AuthImportRoute
'/auth/new': typeof AuthNewRoute
'/$account/chats': typeof AccountChatsLazyRouteWithChildren
'/$account/chats/$id': typeof AccountChatsIdRoute
'/$account/chats/new': typeof AccountChatsNewLazyRoute
}
export interface FileRoutesById {
__root__: typeof rootRoute
'/': typeof IndexRoute
'/bootstrap-relays': typeof BootstrapRelaysRoute
'/new': typeof NewLazyRoute
'/reset': typeof ResetLazyRoute
'/$account/contacts': typeof AccountContactsRoute
'/$account/relays': typeof AccountRelaysRoute
'/auth/connect': typeof AuthConnectRoute
'/auth/import': typeof AuthImportRoute
'/auth/new': typeof AuthNewRoute
'/$account/chats': typeof AccountChatsLazyRouteWithChildren
'/$account/chats/$id': typeof AccountChatsIdRoute
'/$account/chats/new': typeof AccountChatsNewLazyRoute
}
export interface FileRouteTypes {
fileRoutesByFullPath: FileRoutesByFullPath
fullPaths:
| '/'
| '/bootstrap-relays'
| '/new'
| '/reset'
| '/$account/contacts'
| '/$account/relays'
| '/auth/connect'
| '/auth/import'
| '/auth/new'
| '/$account/chats'
| '/$account/chats/$id'
| '/$account/chats/new'
fileRoutesByTo: FileRoutesByTo
to:
| '/'
| '/bootstrap-relays'
| '/new'
| '/reset'
| '/$account/contacts'
| '/$account/relays'
| '/auth/connect'
| '/auth/import'
| '/auth/new'
| '/$account/chats'
| '/$account/chats/$id'
| '/$account/chats/new'
id:
| '__root__'
| '/'
| '/bootstrap-relays'
| '/new'
| '/reset'
| '/$account/contacts'
| '/$account/relays'
| '/auth/connect'
| '/auth/import'
| '/auth/new'
| '/$account/chats'
| '/$account/chats/$id'
| '/$account/chats/new'
fileRoutesById: FileRoutesById
}
export interface RootRouteChildren {
IndexRoute: typeof IndexRoute
BootstrapRelaysRoute: typeof BootstrapRelaysRoute
NewLazyRoute: typeof NewLazyRoute
ResetLazyRoute: typeof ResetLazyRoute
AccountContactsRoute: typeof AccountContactsRoute
AccountRelaysRoute: typeof AccountRelaysRoute
AuthConnectRoute: typeof AuthConnectRoute
AuthImportRoute: typeof AuthImportRoute
AuthNewRoute: typeof AuthNewRoute
AccountChatsLazyRoute: typeof AccountChatsLazyRouteWithChildren
}
const rootRouteChildren: RootRouteChildren = {
IndexRoute: IndexRoute,
BootstrapRelaysRoute: BootstrapRelaysRoute,
NewLazyRoute: NewLazyRoute,
ResetLazyRoute: ResetLazyRoute,
AccountContactsRoute: AccountContactsRoute,
AccountRelaysRoute: AccountRelaysRoute,
AuthConnectRoute: AuthConnectRoute,
AuthImportRoute: AuthImportRoute,
AuthNewRoute: AuthNewRoute,
AccountChatsLazyRoute: AccountChatsLazyRouteWithChildren,
}
export const routeTree = rootRoute
._addFileChildren(rootRouteChildren)
._addFileTypes<FileRouteTypes>()
/* prettier-ignore-end */