diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java index 29c6332a87..66c41187be 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/components/webrtc/WebRtcCallViewModel.java @@ -14,9 +14,7 @@ import org.thoughtcrime.securesms.events.WebRtcViewModel; import org.thoughtcrime.securesms.recipients.LiveRecipient; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.ringrtc.CameraState; -import org.thoughtcrime.securesms.service.WebRtcCallService; import org.thoughtcrime.securesms.util.SingleLiveEvent; -import org.thoughtcrime.securesms.util.livedata.LiveDataPair; import org.thoughtcrime.securesms.util.livedata.LiveDataUtil; public class WebRtcCallViewModel extends ViewModel { @@ -134,11 +132,11 @@ public class WebRtcCallViewModel extends ViewModel { updateWebRtcControls(webRtcViewModel.getState(), webRtcViewModel.isRemoteVideoOffer()); if (webRtcViewModel.getState() == WebRtcViewModel.State.CALL_CONNECTED && callConnectedTime == -1) { - callConnectedTime = System.currentTimeMillis(); + callConnectedTime = webRtcViewModel.getCallConnectedTime(); startTimer(); } else if (webRtcViewModel.getState() != WebRtcViewModel.State.CALL_CONNECTED) { - callConnectedTime = -1; cancelTimer(); + callConnectedTime = -1; } if (webRtcViewModel.getLocalCameraState().isEnabled()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/events/WebRtcViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/events/WebRtcViewModel.java index 5785045c4e..bf70ce11a8 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/events/WebRtcViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/events/WebRtcViewModel.java @@ -46,6 +46,8 @@ public class WebRtcViewModel { private final SurfaceViewRenderer localRenderer; private final SurfaceViewRenderer remoteRenderer; + private final long callConnectedTime; + public WebRtcViewModel(@NonNull State state, @NonNull Recipient recipient, @NonNull CameraState localCameraState, @@ -54,7 +56,8 @@ public class WebRtcViewModel { boolean remoteVideoEnabled, boolean isBluetoothAvailable, boolean isMicrophoneEnabled, - boolean isRemoteVideoOffer) + boolean isRemoteVideoOffer, + long callConnectedTime) { this(state, recipient, @@ -65,7 +68,8 @@ public class WebRtcViewModel { remoteVideoEnabled, isBluetoothAvailable, isMicrophoneEnabled, - isRemoteVideoOffer); + isRemoteVideoOffer, + callConnectedTime); } public WebRtcViewModel(@NonNull State state, @@ -77,7 +81,8 @@ public class WebRtcViewModel { boolean remoteVideoEnabled, boolean isBluetoothAvailable, boolean isMicrophoneEnabled, - boolean isRemoteVideoOffer) + boolean isRemoteVideoOffer, + long callConnectedTime) { this.state = state; this.recipient = recipient; @@ -89,6 +94,7 @@ public class WebRtcViewModel { this.isBluetoothAvailable = isBluetoothAvailable; this.isMicrophoneEnabled = isMicrophoneEnabled; this.isRemoteVideoOffer = isRemoteVideoOffer; + this.callConnectedTime = callConnectedTime; } public @NonNull State getState() { @@ -131,7 +137,18 @@ public class WebRtcViewModel { return remoteRenderer; } + public long getCallConnectedTime() { + return callConnectedTime; + } + public @NonNull String toString() { - return "[State: " + state + ", recipient: " + recipient.getId().serialize() + ", identity: " + identityKey + ", remoteVideo: " + remoteVideoEnabled + ", localVideo: " + localCameraState.isEnabled() + ", isRemoteVideoOffer: " + isRemoteVideoOffer + "]"; + return "[State: " + state + + ", recipient: " + recipient.getId().serialize() + + ", identity: " + identityKey + + ", remoteVideo: " + remoteVideoEnabled + + ", localVideo: " + localCameraState.isEnabled() + + ", isRemoteVideoOffer: " + isRemoteVideoOffer + + ", callConnectedTime: " + callConnectedTime + + "]"; } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/service/WebRtcCallService.java b/app/src/main/java/org/thoughtcrime/securesms/service/WebRtcCallService.java index 58d3c058eb..d5dc158e93 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/service/WebRtcCallService.java +++ b/app/src/main/java/org/thoughtcrime/securesms/service/WebRtcCallService.java @@ -167,6 +167,8 @@ public class WebRtcCallService extends Service implements CallManager.Observer, private boolean isRemoteVideoOffer = false; private boolean acceptWithVideo = false; + private long callConnectedTime = -1; + private SignalServiceMessageSender messageSender; private SignalServiceAccountManager accountManager; private SignalAudioManager audioManager; @@ -925,6 +927,8 @@ public class WebRtcCallService extends Service implements CallManager.Observer, lockManager.updatePhoneState(getInCallPhoneState()); } + callConnectedTime = System.currentTimeMillis(); + sendMessage(WebRtcViewModel.State.CALL_CONNECTED, activePeer, localCameraState, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled, isRemoteVideoOffer); unregisterPowerButtonReceiver(); @@ -1277,7 +1281,8 @@ public class WebRtcCallService extends Service implements CallManager.Observer, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled, - isRemoteVideoOffer)); + isRemoteVideoOffer, + callConnectedTime)); } private void sendMessage(@NonNull WebRtcViewModel.State state, @@ -1298,7 +1303,8 @@ public class WebRtcCallService extends Service implements CallManager.Observer, remoteVideoEnabled, bluetoothAvailable, microphoneEnabled, - isRemoteVideoOffer)); + isRemoteVideoOffer, + callConnectedTime)); } private ListenableFutureTask sendMessage(@NonNull final RemotePeer remotePeer,