diff --git a/src-tauri/src/gemini.rs b/src-tauri/src/gemini.rs index 26f2cee..788aa08 100644 --- a/src-tauri/src/gemini.rs +++ b/src-tauri/src/gemini.rs @@ -115,18 +115,31 @@ fn build_user_gemini_parts( } } +pub struct GeminiCallParams { + pub mode: String, + pub aspect_ratio: Option, + pub image_size: String, + pub user_text: Option, + pub user_image_base64: Option, + pub user_image_mime: Option, +} + pub async fn call_gemini( api_key: String, - mode: String, - aspect_ratio: Option, - image_size: String, history: Vec, - user_text: Option, - user_image_base64: Option, - user_image_mime: Option, + params: GeminiCallParams, ) -> Result<(Vec, f64), String> { let client = reqwest::Client::new(); + let GeminiCallParams { + mode, + aspect_ratio, + image_size, + user_text, + user_image_base64, + user_image_mime, + } = params; + let is_first_message = history.is_empty(); let mut contents: Vec = history diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 92ee690..80ef8cb 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -1,7 +1,7 @@ mod gemini; mod storage; -use gemini::{call_gemini, read_reference_image_base64}; +use gemini::{call_gemini, read_reference_image_base64, GeminiCallParams}; use serde::Serialize; use storage::{ delete_thread_from_disk, load_config_from_disk, load_threads_from_disk, save_config_to_disk, @@ -46,6 +46,7 @@ async fn save_config(config: Config) -> Result<(), String> { } #[tauri::command] +#[allow(clippy::too_many_arguments)] async fn send_message( api_key: String, mode: String, @@ -58,13 +59,15 @@ async fn send_message( ) -> Result { let (parts, cost_usd) = call_gemini( api_key, - mode, - aspect_ratio, - image_size, history, - user_text, - user_image_base64, - user_image_mime, + GeminiCallParams { + mode, + aspect_ratio, + image_size, + user_text, + user_image_base64, + user_image_mime, + }, ) .await?; Ok(SendMessageResult { parts, cost_usd })