diff --git a/src-tauri/resources/tray_idle.png b/src-tauri/resources/tray_idle.png index 49bc715..3892aa8 100644 Binary files a/src-tauri/resources/tray_idle.png and b/src-tauri/resources/tray_idle.png differ diff --git a/src-tauri/resources/tray_recording.png b/src-tauri/resources/tray_recording.png index 4d12930..8839e84 100644 Binary files a/src-tauri/resources/tray_recording.png and b/src-tauri/resources/tray_recording.png differ diff --git a/src-tauri/resources/tray_transcribing.png b/src-tauri/resources/tray_transcribing.png new file mode 100644 index 0000000..bb6fb25 Binary files /dev/null and b/src-tauri/resources/tray_transcribing.png differ diff --git a/src-tauri/src/actions.rs b/src-tauri/src/actions.rs index a131417..f8a657f 100644 --- a/src-tauri/src/actions.rs +++ b/src-tauri/src/actions.rs @@ -77,7 +77,7 @@ impl ShortcutAction for TranscribeAction { let rm = Arc::clone(&app.state::>()); let tm = Arc::clone(&app.state::>()); - change_tray_icon(app, TrayIconState::Idle); + change_tray_icon(app, TrayIconState::Transcribing); // Play audio feedback for recording stop play_recording_stop_sound(app); @@ -112,23 +112,31 @@ impl ShortcutAction for TranscribeAction { let ah_clone = ah.clone(); let paste_time = Instant::now(); ah.run_on_main_thread(move || { - match utils::paste(transcription_clone, ah_clone) { + match utils::paste(transcription_clone, ah_clone.clone()) { Ok(()) => debug!( "Text pasted successfully in {:?}", paste_time.elapsed() ), Err(e) => eprintln!("Failed to paste transcription: {}", e), } + change_tray_icon(&ah_clone, TrayIconState::Idle); }) .unwrap_or_else(|e| { eprintln!("Failed to run paste on main thread: {:?}", e); + change_tray_icon(&ah, TrayIconState::Idle); }); + } else { + change_tray_icon(&ah, TrayIconState::Idle); } } - Err(err) => debug!("Global Shortcut Transcription error: {}", err), + Err(err) => { + debug!("Global Shortcut Transcription error: {}", err); + change_tray_icon(&ah, TrayIconState::Idle); + }, } } else { debug!("No samples retrieved from recording stop"); + change_tray_icon(&ah, TrayIconState::Idle); } }); diff --git a/src-tauri/src/utils.rs b/src-tauri/src/utils.rs index fc7b20c..be67035 100644 --- a/src-tauri/src/utils.rs +++ b/src-tauri/src/utils.rs @@ -73,6 +73,7 @@ pub fn paste(text: String, app_handle: AppHandle) -> Result<(), String> { pub enum TrayIconState { Idle, Recording, + Transcribing, } pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) { @@ -81,6 +82,7 @@ pub fn change_tray_icon(app: &AppHandle, icon: TrayIconState) { let icon_path = match icon { TrayIconState::Idle => "resources/tray_idle.png", TrayIconState::Recording => "resources/tray_recording.png", + TrayIconState::Transcribing => "resources/tray_transcribing.png", }; let _ = tray.set_icon(Some(