diff --git a/mediarepo-api/Cargo.toml b/mediarepo-api/Cargo.toml index 2875353..5ee8df6 100644 --- a/mediarepo-api/Cargo.toml +++ b/mediarepo-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mediarepo-api" -version = "0.3.0" +version = "0.4.0" edition = "2018" license = "gpl-3" diff --git a/mediarepo-api/src/client_api/file.rs b/mediarepo-api/src/client_api/file.rs index d49c86f..257c634 100644 --- a/mediarepo-api/src/client_api/file.rs +++ b/mediarepo-api/src/client_api/file.rs @@ -2,7 +2,7 @@ use crate::client_api::error::ApiResult; use crate::client_api::IPCApi; use crate::types::files::{ FileMetadataResponse, FindFilesByTagsRequest, GetFileThumbnailsRequest, ReadFileRequest, - SortKey, TagQuery, ThumbnailMetadataResponse, + SortKey, TagQuery, ThumbnailMetadataResponse, UpdateFileNameRequest, }; use crate::types::identifier::FileIdentifier; use async_trait::async_trait; @@ -81,4 +81,13 @@ impl FileApi { let payload: BytePayload = self.emit_and_get("read_thumbnail", hash).await?; Ok(payload.to_payload_bytes()?) } + + /// Updates a files name + #[tracing::instrument(level = "debug", skip(self))] + pub async fn update_file_name(&self, file_id: FileIdentifier, name: String) -> ApiResult<()> { + self.emit("update_file_name", UpdateFileNameRequest { file_id, name }) + .await?; + + Ok(()) + } } diff --git a/mediarepo-api/src/tauri_plugin/commands/file.rs b/mediarepo-api/src/tauri_plugin/commands/file.rs index 324e7c5..6a9f40d 100644 --- a/mediarepo-api/src/tauri_plugin/commands/file.rs +++ b/mediarepo-api/src/tauri_plugin/commands/file.rs @@ -70,3 +70,13 @@ pub async fn read_thumbnail( Ok(uri) } } + +#[tauri::command] +pub async fn update_file_name(api_state: ApiAccess<'_>, id: i64, name: String) -> PluginResult<()> { + let api = api_state.api().await?; + api.file + .update_file_name(FileIdentifier::ID(id), name) + .await?; + + Ok(()) +} diff --git a/mediarepo-api/src/tauri_plugin/mod.rs b/mediarepo-api/src/tauri_plugin/mod.rs index 46b97cf..c97d739 100644 --- a/mediarepo-api/src/tauri_plugin/mod.rs +++ b/mediarepo-api/src/tauri_plugin/mod.rs @@ -50,7 +50,8 @@ impl MediarepoPlugin { check_local_repository_exists, remove_repository, change_file_tags, - create_tags + create_tags, + update_file_name ]), } } diff --git a/mediarepo-api/src/types/files.rs b/mediarepo-api/src/types/files.rs index b8dcd1c..0760c80 100644 --- a/mediarepo-api/src/types/files.rs +++ b/mediarepo-api/src/types/files.rs @@ -86,3 +86,9 @@ pub struct ThumbnailMetadataResponse { pub width: i32, pub mime_type: Option, } + +#[derive(Clone, Debug, Serialize, Deserialize)] +pub struct UpdateFileNameRequest { + pub file_id: FileIdentifier, + pub name: String, +}