diff --git a/Makefile b/Makefile index aa5a6d3..ebed1ac 100644 --- a/Makefile +++ b/Makefile @@ -20,7 +20,7 @@ devserver: echo -n '' > /tmp/rqbit-log && cargo run -- \ --log-file /tmp/rqbit-log \ --log-file-rust-log=debug,librqbit=trace \ - server start --fastresume /tmp/scratch/ + server start /tmp/scratch/ @PHONY: devserver devserver-postgres: diff --git a/crates/librqbit/src/lib.rs b/crates/librqbit/src/lib.rs index defe1d1..4dda659 100644 --- a/crates/librqbit/src/lib.rs +++ b/crates/librqbit/src/lib.rs @@ -57,7 +57,7 @@ mod peer_info_reader; mod read_buf; mod session; mod session_persistence; -mod session_stats; +pub mod session_stats; mod spawn_utils; pub mod storage; mod stream_connect; diff --git a/crates/librqbit/webui/src/context.tsx b/crates/librqbit/webui/src/context.tsx index 58a63a8..7bf10b8 100644 --- a/crates/librqbit/webui/src/context.tsx +++ b/crates/librqbit/webui/src/context.tsx @@ -1,5 +1,5 @@ import { createContext } from "react"; -import { RqbitAPI } from "./api-types"; +import { RqbitAPI, SessionStats } from "./api-types"; export const APIContext = createContext({ listTorrents: () => { @@ -38,5 +38,8 @@ export const APIContext = createContext({ getPlaylistUrl: function (index: number): string | null { throw new Error("Function not implemented."); }, + stats: function (): Promise { + throw new Error("Function not implemented."); + }, }); export const RefreshTorrentStatsContext = createContext({ refresh: () => {} }); diff --git a/desktop/src-tauri/src/main.rs b/desktop/src-tauri/src/main.rs index a8e4306..97f2e7c 100644 --- a/desktop/src-tauri/src/main.rs +++ b/desktop/src-tauri/src/main.rs @@ -19,6 +19,7 @@ use librqbit::{ TorrentListResponse, TorrentStats, }, dht::PersistentDhtConfig, + session_stats::snapshot::SessionStatsSnapshot, tracing_subscriber_config_utils::{init_logging, InitLoggingOptions, InitLoggingResult}, AddTorrent, AddTorrentOptions, Api, ApiError, PeerConnectionOptions, Session, SessionOptions, SessionPersistenceConfig, @@ -318,6 +319,11 @@ async fn torrent_action_configure( .await } +#[tauri::command] +async fn stats(state: tauri::State<'_, State>) -> Result { + Ok(state.api()?.api_session_stats()) +} + #[tauri::command] fn get_version() -> &'static str { env!("CARGO_PKG_VERSION") @@ -352,6 +358,7 @@ async fn start() { torrent_action_start, torrent_action_configure, torrent_create_from_base64_file, + stats, get_version, config_default, config_current, diff --git a/desktop/src/api.tsx b/desktop/src/api.tsx index 6e0f9e8..51138a0 100644 --- a/desktop/src/api.tsx +++ b/desktop/src/api.tsx @@ -6,6 +6,7 @@ import { TorrentDetails, TorrentStats, ErrorDetails, + SessionStats, } from "rqbit-webui/src/api-types"; import { InvokeArgs, invoke } from "@tauri-apps/api/tauri"; @@ -141,5 +142,8 @@ export const makeAPI = (configuration: RqbitDesktopConfig): RqbitAPI => { } return `${httpBase}/torrents/${index}/playlist`; }, + stats: () => { + return invokeAPI("stats"); + }, }; };