From 5f14077feda9c5457117555d7a033cbc5a03f134 Mon Sep 17 00:00:00 2001 From: trivernis Date: Sun, 7 Nov 2021 17:13:00 +0100 Subject: [PATCH] Add command to get thumbnails of a specific size Signed-off-by: trivernis --- mediarepo-api/src/client_api/protocol.rs | 4 ++++ .../src/tauri_plugin/commands/file.rs | 23 +++++++++++++++++++ mediarepo-api/src/tauri_plugin/mod.rs | 3 ++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/mediarepo-api/src/client_api/protocol.rs b/mediarepo-api/src/client_api/protocol.rs index 90659e0..81bea70 100644 --- a/mediarepo-api/src/client_api/protocol.rs +++ b/mediarepo-api/src/client_api/protocol.rs @@ -26,9 +26,12 @@ impl AsyncStreamProtocolListener for ApiProtocolListener { type RemoteAddressType = String; type Stream = ApiProtocolStream; + #[tracing::instrument] async fn protocol_bind(address: Self::AddressType) -> Result { if let Some(addr) = address.to_socket_addrs().ok().and_then(|mut a| a.next()) { let listener = TcpListener::bind(addr).await?; + tracing::info!("Connecting via TCP"); + Ok(Self::Tcp(listener)) } else { #[cfg(unix)] @@ -37,6 +40,7 @@ impl AsyncStreamProtocolListener for ApiProtocolListener { use tokio::net::UnixListener; let path = PathBuf::from(address); let listener = UnixListener::bind(path)?; + tracing::info!("Connecting via unix domain socket"); Ok(Self::UnixSocket(listener)) } diff --git a/mediarepo-api/src/tauri_plugin/commands/file.rs b/mediarepo-api/src/tauri_plugin/commands/file.rs index 8d527d9..08ac34f 100644 --- a/mediarepo-api/src/tauri_plugin/commands/file.rs +++ b/mediarepo-api/src/tauri_plugin/commands/file.rs @@ -71,6 +71,29 @@ pub async fn read_thumbnail( } } +#[tauri::command] +pub async fn get_thumbnail_of_size( + api_state: ApiAccess<'_>, + buffer_state: BufferAccess<'_>, + file_id: i64, + min_size: (u32, u32), + max_size: (u32, u32), +) -> PluginResult { + let api = api_state.api().await?; + let (thumb, data) = api + .file + .get_thumbnail_of_size(FileIdentifier::ID(file_id), min_size, max_size) + .await?; + let uri = add_once_buffer( + buffer_state, + thumb.hash, + thumb.mime_type.unwrap_or(String::from("image/png")), + data, + ); + + Ok(uri) +} + #[tauri::command] pub async fn update_file_name( api_state: ApiAccess<'_>, diff --git a/mediarepo-api/src/tauri_plugin/mod.rs b/mediarepo-api/src/tauri_plugin/mod.rs index c97d739..2a3ff0a 100644 --- a/mediarepo-api/src/tauri_plugin/mod.rs +++ b/mediarepo-api/src/tauri_plugin/mod.rs @@ -34,6 +34,7 @@ impl MediarepoPlugin { read_file_by_hash, get_file_thumbnails, read_thumbnail, + get_thumbnail_of_size, get_repositories, get_all_tags, get_tags_for_file, @@ -85,7 +86,7 @@ impl Plugin for MediarepoPlugin { Ok(()) } - #[tracing::instrument(skip_all)] + #[tracing::instrument(level = "trace", skip_all)] fn extend_api(&mut self, message: Invoke) { (self.invoke_handler)(message) }