You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Declining a call desyncs read states between devices #8631
I think the solution might be not to mark the call message as read when the call is ended, but mark it as noticed locally instead, and also mark it as noticed when a copy of the message declining a call is received on a second device.
I do like that you get read check marks on caller side when the call was declined
If we want to keep double checkmark when someone declines a call, we can either:
Special-case MDN processing on the receiver side, and if it is an MDN for a call, not mark all messages above as noticed. This looks hacky, also because MDN might mean the user has actually opened a chat and looked at the message, so this will introduce an opposite bug where looking at a page full of missed calls will not mark the chat as noticed on another device.
Mark call message as read when we receive any response (ending a call or answering it). But need to make sure we don't do it if read receipt was not requested, otherwise user with read receipts disabled will get double checkmarks, but only on calls.
You can also see on the call that it was declined (and not canceled) even without read receipts, so the information that callee has tapped "decline" is there anyway, so the difference will be that there will be no double checkmark here:
You can still see that in the first case callee interacted with the call, and in the second case did not click anything or was offline.
Activity
link2xt commentedon Aug 27, 2026
This is likely caused by marking the call message as seen when ending the call (
end_callis used for declining as well):core/src/calls.rs
Line 286 in a344cab
This sends and MDN (read receipt) to self which marks all messages above as seen:
core/src/receive_imf.rs
Lines 911 to 980 in a344cab
I think the solution might be not to mark the call message as read when the call is ended, but mark it as noticed locally instead, and also mark it as noticed when a copy of the message declining a call is received on a second device.
Amzd commentedon Aug 28, 2026
I do like that you get read check marks on caller side when the call was declined
link2xt commentedon Aug 28, 2026
If we want to keep double checkmark when someone declines a call, we can either:
You can also see on the call that it was declined (and not canceled) even without read receipts, so the information that callee has tapped "decline" is there anyway, so the difference will be that there will be no double checkmark here:

You can still see that in the first case callee interacted with the call, and in the second case did not click anything or was offline.
Amzd commentedon Sep 9, 2026
Okay the checkmarks are actually less important than this bug so lets just remove the two checkmarks for now