@@ -328,20 +328,19 @@ impl Context {
328328 return Ok ( ( ) ) ;
329329 } ;
330330 if !call. is_accepted ( ) && !call. is_ended ( ) {
331+ let ( msg_id, chat_id) = ( call_id, call. msg . chat_id ) ;
331332 if call. is_incoming ( ) {
332333 call. mark_as_canceled ( & context) . await ?;
333334 let missed_call_str = stock_str:: missed_call ( & context) . await ;
334335 call. update_text ( & context, & missed_call_str) . await ?;
336+ context. emit_event ( EventType :: CallMissed { msg_id, chat_id } ) ;
335337 } else {
336338 call. mark_as_ended ( & context) . await ?;
337339 let canceled_call_str = stock_str:: canceled_call ( & context) . await ;
338340 call. update_text ( & context, & canceled_call_str) . await ?;
341+ context. emit_event ( EventType :: CallEnded { msg_id, chat_id } ) ;
339342 }
340343 context. emit_msgs_changed ( call. msg . chat_id , call_id) ;
341- context. emit_event ( EventType :: CallEnded {
342- msg_id : call. msg . id ,
343- chat_id : call. msg . chat_id ,
344- } ) ;
345344 }
346345 Ok ( ( ) )
347346 }
@@ -362,7 +361,10 @@ impl Context {
362361 if call. is_stale ( ) {
363362 let missed_call_str = stock_str:: missed_call ( self ) . await ;
364363 call. update_text ( self , & missed_call_str) . await ?;
365- self . emit_incoming_msg ( call. msg . chat_id , call_id) ; // notify missed call
364+ // TODO: Don't notify for blocked contacts
365+ let ( msg_id, chat_id) = ( call_id, call. msg . chat_id ) ;
366+ self . emit_event ( EventType :: CallMissed { msg_id, chat_id } ) ;
367+ self . emit_msgs_changed ( chat_id, msg_id) ;
366368 } else {
367369 let incoming_call_str =
368370 stock_str:: incoming_call ( self , call. has_video_initially ( ) ) . await ;
@@ -454,16 +456,19 @@ impl Context {
454456 return Ok ( ( ) ) ;
455457 }
456458
459+ let ( msg_id, chat_id) = ( call_id, call. msg . chat_id ) ;
457460 if !call. is_accepted ( ) {
458461 if call. is_incoming ( ) {
459462 if from_id == ContactId :: SELF {
460463 call. mark_as_ended ( self ) . await ?;
461464 let declined_call_str = stock_str:: declined_call ( self ) . await ;
462465 call. update_text ( self , & declined_call_str) . await ?;
466+ self . emit_event ( EventType :: CallEnded { msg_id, chat_id } ) ;
463467 } else {
464468 call. mark_as_canceled ( self ) . await ?;
465469 let missed_call_str = stock_str:: missed_call ( self ) . await ;
466470 call. update_text ( self , & missed_call_str) . await ?;
471+ self . emit_event ( EventType :: CallMissed { msg_id, chat_id } ) ;
467472 }
468473 } else {
469474 // outgoing
@@ -476,17 +481,15 @@ impl Context {
476481 let declined_call_str = stock_str:: declined_call ( self ) . await ;
477482 call. update_text ( self , & declined_call_str) . await ?;
478483 }
484+ self . emit_event ( EventType :: CallEnded { msg_id, chat_id } ) ;
479485 }
480486 } else {
481487 call. mark_as_ended ( self ) . await ?;
482488 call. update_text_duration ( self ) . await ?;
489+ self . emit_event ( EventType :: CallEnded { msg_id, chat_id } ) ;
483490 }
484491
485492 self . emit_msgs_changed ( call. msg . chat_id , call_id) ;
486- self . emit_event ( EventType :: CallEnded {
487- msg_id : call. msg . id ,
488- chat_id : call. msg . chat_id ,
489- } ) ;
490493 }
491494 _ => { }
492495 }
0 commit comments