@@ -11,8 +11,8 @@ use crate::requests::pod_req::{
1111 call_get_auto_skip_times, call_get_episode_id, call_get_play_episode_details,
1212 call_get_podcast_id_from_ep, call_get_queued_episodes, call_increment_listen_time,
1313 call_increment_played, call_mark_episode_completed, call_queue_episode,
14- call_record_listen_duration, call_remove_queued_episode, HistoryAddRequest ,
15- MarkEpisodeCompletedRequest , QueuePodcastRequest , RecordListenDurationRequest ,
14+ call_record_listen_duration, call_remove_queued_episode, call_update_episode_duration , HistoryAddRequest ,
15+ MarkEpisodeCompletedRequest , QueuePodcastRequest , RecordListenDurationRequest , UpdateEpisodeDurationRequest
1616} ;
1717use gloo_timers:: callback:: Interval ;
1818use js_sys:: Array ;
@@ -1994,8 +1994,17 @@ pub fn on_play_click(
19941994 let actual_duration_sec = get_actual_duration ( & src_for_analysis) . await ;
19951995
19961996 // Use the actual duration if available, otherwise fall back to provided duration
1997- let final_duration_sec =
1998- actual_duration_sec. unwrap_or ( episode_duration_for_wasm as f64 ) ;
1997+ let final_duration_sec = actual_duration_sec. unwrap_or ( episode_duration_for_wasm as f64 ) ;
1998+
1999+ // Set actual duration in db
2000+ if ( final_duration_sec as i32 ) != episode_duration_for_wasm {
2001+ let req = UpdateEpisodeDurationRequest {
2002+ episode_id,
2003+ new_duration : final_duration_sec as i32 ,
2004+ is_youtube : episode_is_youtube,
2005+ } ;
2006+ call_update_episode_duration ( & server_name_for_player, & Some ( api_key_for_player. clone ( ) ) , & req) . await ;
2007+ }
19992008
20002009 web_sys:: console:: log_1 ( & JsValue :: from_str ( & format ! (
20012010 "Original duration: {}s, Actual duration: {}s" ,
0 commit comments