Document, test and fix call-related messages/events for multi-device caller/callee
- Dominant language
- Rust
- Stars
- 929
- Forks
- 143
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 53
Description
There are ongoing call-related issues/PRs at #8631 #8633 #7840 #8576 and several older closed ones, including #7842, whose fix (#7946) is what #8633 now may partly revert?
I find it pretty hard to understand what's actually going on, on all the participating devices of caller/callees. There is some summarizing documentation in [deltachat.h](https://github.com/chatmail/core/blob/693c40426662c6f1f310bcab2975d38eb192d9ef/deltachat-ffi/deltachat.h#L1119-L1171) but it talks about parties, not devices. Still the best we have currently, but it may have drifted from the code (it eg says ringing timeout is "after 1 minute" while `RINGING_SECONDS` is 120).
The lack of a comprehensive overview and joint understanding stating invariants, mechanisms, and the sending/receiving of call related messages, makes it hard for me to review PR #8633 so i suggest:
- [ ] `calls.rs` grows a module docstring, where both core and UI developers can understand what's going on in multi-device calls on both sides, including core-internal state changes, events and wire messages. Even if some code lives in the receiving and sending rust code, `calls.rs` should still provide a comprehensive reference.
- [ ] `calls_tests.rs` covers all accept/decline/ended cases on both the "active" caller/callee devices and their other devices, to begin to develop certainty that things work as expected.
I suspect working on this issue will also involve fixing things, but even if not, we need a joint understanding, so everyone can go to one place to understand the mechanics and events.
Contributor guide
Assessment
This issue has not been assessed yet.