Add snackbar that is displayed if you're currently in a different call.

This commit is contained in:
Alex Hart
2024-09-16 10:24:09 -03:00
committed by Greyson Parrelli
parent c36c6e62e2
commit 5bd3eda17d
24 changed files with 394 additions and 131 deletions

View File

@@ -51,7 +51,7 @@ public class ActiveCallActionProcessorDelegate extends WebRtcActionProcessor {
@Override
protected @NonNull WebRtcServiceState handleIsInCallQuery(@NonNull WebRtcServiceState currentState, @Nullable ResultReceiver resultReceiver) {
if (resultReceiver != null) {
resultReceiver.send(1, null);
resultReceiver.send(1, ActiveCallData.fromCallState(currentState).toBundle());
}
return currentState;
}

View File

@@ -0,0 +1,41 @@
/*
* Copyright 2024 Signal Messenger, LLC
* SPDX-License-Identifier: AGPL-3.0-only
*/
package org.thoughtcrime.securesms.service.webrtc
import android.os.Bundle
import android.os.Parcelable
import androidx.core.os.bundleOf
import kotlinx.parcelize.Parcelize
import org.signal.core.util.getParcelableCompat
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.service.webrtc.state.WebRtcServiceState
/**
* Active call data to be returned from calls to isInCallQuery.
*/
@Parcelize
data class ActiveCallData(
val recipientId: RecipientId
) : Parcelable {
companion object {
private const val KEY = "ACTIVE_CALL_DATA"
@JvmStatic
fun fromCallState(webRtcServiceState: WebRtcServiceState): ActiveCallData {
return ActiveCallData(
webRtcServiceState.callInfoState.callRecipient.id
)
}
@JvmStatic
fun fromBundle(bundle: Bundle): ActiveCallData {
return bundle.getParcelableCompat(KEY, ActiveCallData::class.java)!!
}
}
fun toBundle(): Bundle = bundleOf(KEY to this)
}

View File

@@ -49,7 +49,7 @@ public class GroupConnectedActionProcessor extends GroupActionProcessor {
@Override
protected @NonNull WebRtcServiceState handleIsInCallQuery(@NonNull WebRtcServiceState currentState, @Nullable ResultReceiver resultReceiver) {
if (resultReceiver != null) {
resultReceiver.send(1, null);
resultReceiver.send(1, ActiveCallData.fromCallState(currentState).toBundle());
}
return currentState;
}

View File

@@ -36,7 +36,7 @@ public class GroupJoiningActionProcessor extends GroupActionProcessor {
@Override
protected @NonNull WebRtcServiceState handleIsInCallQuery(@NonNull WebRtcServiceState currentState, @Nullable ResultReceiver resultReceiver) {
if (resultReceiver != null) {
resultReceiver.send(1, null);
resultReceiver.send(1, ActiveCallData.fromCallState(currentState).toBundle());
}
return currentState;
}

View File

@@ -100,7 +100,7 @@ public abstract class WebRtcActionProcessor {
protected @NonNull WebRtcServiceState handleIsInCallQuery(@NonNull WebRtcServiceState currentState, @Nullable ResultReceiver resultReceiver) {
if (resultReceiver != null) {
resultReceiver.send(0, null);
resultReceiver.send(0, ActiveCallData.fromCallState(currentState).toBundle());
}
return currentState;
}