Skip to content

fix: exclude video calls from Call Pull list (WT-1618)#1443

Draft
SERDUN wants to merge 1 commit into
developfrom
fix/WT-1618-exclude-video-from-call-pull
Draft

fix: exclude video calls from Call Pull list (WT-1618)#1443
SERDUN wants to merge 1 commit into
developfrom
fix/WT-1618-exclude-video-from-call-pull

Conversation

@SERDUN

@SERDUN SERDUN commented Jun 24, 2026

Copy link
Copy Markdown
Member

Overview

Pulling a video call via Call Pull crashes: the pull INVITE offers audio-only, the server answer keeps the original video m-line, the offer/answer m-line layout no longer matches and setRemoteDescription rejects it, so the pulled call fails. Reproduced on-device (Android): setRemoteDescription failed: The order of m-lines in answer doesn't match order in offer. Rejecting answer.

The client cannot currently tell audio from video before pulling, because dialog_info carries no media-type flag. This PR adds the client half of the fix, staged to activate when the backend (WT-1617) starts reporting media type.

Changes

  • SignalingDialogInfo: parse/serialize a nullable has_video from dialog_info.
  • DialogInfo: hasVideo field; pullable now excludes dialogs with hasVideo == true.
  • app_database: dialog_info.has_video column + drift schema migration v24 (the Call Pull cubit reads dialogs from the drift store, so the flag must survive the DB round-trip).
  • Threaded hasVideo through the signaling and drift mappers.

Behaviour

hasVideo is nullable on purpose:

  • null (backend does not report media type yet) -> unchanged behaviour; audio pull keeps working, video still shows (status quo).
  • false (audio) -> pullable.
  • true (video) -> excluded from the pull list; the badge no longer offers a pull that would crash.

So this is a no-op until the backend ships has_video; once WT-1617 sends has_video=true for video dialogs they drop out of the list automatically with no further client change. Depends on WT-1617 to activate.

Pulling a video call offers an audio-only INVITE; the server answer keeps the
original video m-line, the offer/answer m-line layout no longer matches and
setRemoteDescription rejects it, so the pulled call fails.

Thread a nullable has_video flag from the signaling dialog_info through the model
and the drift store, and exclude known-video dialogs from the pull list
(DialogInfo.pullable). The flag is nullable: until the backend reports media type
it stays null and behaviour is unchanged (audio pull keeps working); once the
backend sends has_video=true for video dialogs they drop out of the list
automatically, with no further client change.

- SignalingDialogInfo: parse/serialize has_video
- DialogInfo: hasVideo field + pullable gate
- app_database: dialog_info.has_video column + schema migration v24
- tests: signaling parsing, pullable gate
@SERDUN SERDUN marked this pull request as draft June 24, 2026 08:10
@SERDUN SERDUN force-pushed the fix/WT-1618-exclude-video-from-call-pull branch from 762f567 to b9ce1cb Compare June 24, 2026 08:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant