@@ -30,48 +30,21 @@ impl ModelController {
3030 pub async fn send_media_progress ( & self , message : MediasProgressMessage ) {
3131 let mapping: Vec < crate :: domain:: library:: UserMapping > = self . get_library_mapped_users ( & message. library ) . await . ok ( ) . unwrap_or_default ( ) ;
3232
33- // Broadcast via SSE
34- self . broadcast_sse ( SseEvent :: MediaProgress ( message. clone ( ) ) ) ;
35-
36- self . for_connected_users ( & message, |user, socket, message| {
37-
38- if let Ok ( user_id) = user. user_id ( ) {
39- if user_id == message. progress . user_ref {
40- let _ = socket. emit ( "media_progress" , message) ;
41- }
42- }
43- } ) ;
44-
45- for map in mapping. clone ( ) {
33+ for map in & mapping {
4634 if message. progress . user_ref == map. to {
47- let mut message = message. clone ( ) ;
48- message. progress . user_ref = map. from . clone ( ) ;
49- // Broadcast mapped SSE event
50- self . broadcast_sse ( SseEvent :: MediaProgress ( message. clone ( ) ) ) ;
51- self . for_connected_users ( & message, |user, socket, message| {
52-
53- if let Ok ( user_id) = user. user_id ( ) {
54- if user_id == message. progress . user_ref {
55- let _ = socket. emit ( "media_progress" , message) ;
56- }
57- }
58- } ) ;
35+ let mut mapped = message. clone ( ) ;
36+ mapped. progress . user_ref = map. from . clone ( ) ;
37+ self . broadcast_sse ( SseEvent :: MediaProgress ( mapped) ) ;
5938 }
6039 if message. progress . user_ref == map. from {
61- let mut message = message. clone ( ) ;
62- message. progress . user_ref = map. to ;
63- // Broadcast mapped SSE event
64- self . broadcast_sse ( SseEvent :: MediaProgress ( message. clone ( ) ) ) ;
65- self . for_connected_users ( & message, |user, socket, message| {
66-
67- if let Ok ( user_id) = user. user_id ( ) {
68- if user_id == message. progress . user_ref {
69- let _ = socket. emit ( "media_progress" , message) ;
70- }
71- }
72- } ) ;
40+ let mut mapped = message. clone ( ) ;
41+ mapped. progress . user_ref = map. to . clone ( ) ;
42+ self . broadcast_sse ( SseEvent :: MediaProgress ( mapped) ) ;
7343 }
7444 }
45+
46+ // Broadcast original message last (consumes message)
47+ self . broadcast_sse ( SseEvent :: MediaProgress ( message) ) ;
7548 }
7649
7750 pub async fn get_medias_progresses ( & self , library_id : & str , query : MediaProgressesQuery , requesting_user : & ConnectedUser ) -> RsResult < Vec < RsMediaProgress > > {
0 commit comments