Support incoming audio only calls
This commit is contained in:
parent
5491040ac5
commit
7ef43abd57
22 changed files with 156 additions and 53 deletions
|
|
@ -14,6 +14,7 @@ import io.element.android.libraries.core.extensions.runCatchingExceptions
|
|||
import io.element.android.libraries.matrix.api.MatrixClientProvider
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.matrix.api.exception.NotificationResolverException
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.notification.NotificationContent
|
||||
import io.element.android.libraries.matrix.api.notification.NotificationData
|
||||
import io.element.android.libraries.matrix.api.notification.RtcNotificationType
|
||||
|
|
@ -90,6 +91,7 @@ class DefaultCallNotificationEventResolver(
|
|||
|
||||
notificationData.run {
|
||||
if (content.type == RtcNotificationType.RING && isRoomCallActive && !forceNotify) {
|
||||
Timber.d("Ringing call notification intent ${content.callIntent} in room $roomId")
|
||||
NotifiableRingingCallEvent(
|
||||
sessionId = sessionId,
|
||||
roomId = roomId,
|
||||
|
|
@ -100,10 +102,18 @@ class DefaultCallNotificationEventResolver(
|
|||
timestamp = this.timestamp,
|
||||
isRedacted = false,
|
||||
isUpdated = false,
|
||||
description = stringProvider.getString(R.string.notification_incoming_call),
|
||||
description = if (content.callIntent ==
|
||||
CallIntent.AUDIO) {
|
||||
stringProvider.getString(R.string.notification_incoming_audio_call)
|
||||
} else {
|
||||
stringProvider.getString(
|
||||
R.string.notification_incoming_call
|
||||
)
|
||||
},
|
||||
senderDisambiguatedDisplayName = getDisambiguatedDisplayName(content.senderId),
|
||||
roomAvatarUrl = roomAvatarUrl,
|
||||
rtcNotificationType = content.type,
|
||||
callIntent = content.callIntent,
|
||||
senderId = content.senderId,
|
||||
senderAvatarUrl = senderAvatarUrl,
|
||||
expirationTimestamp = content.expirationTimestampMillis,
|
||||
|
|
@ -119,7 +129,11 @@ class DefaultCallNotificationEventResolver(
|
|||
noisy = true,
|
||||
timestamp = this.timestamp,
|
||||
senderDisambiguatedDisplayName = getDisambiguatedDisplayName(content.senderId),
|
||||
body = stringProvider.getString(R.string.notification_incoming_call),
|
||||
body = if (content.callIntent == CallIntent.VIDEO) {
|
||||
stringProvider.getString(R.string.notification_incoming_call)
|
||||
} else {
|
||||
stringProvider.getString(R.string.notification_incoming_audio_call)
|
||||
},
|
||||
roomName = roomDisplayName,
|
||||
roomIsDm = isDm,
|
||||
roomAvatarPath = roomAvatarUrl,
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ import io.element.android.libraries.matrix.api.core.EventId
|
|||
import io.element.android.libraries.matrix.api.core.RoomId
|
||||
import io.element.android.libraries.matrix.api.core.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.UserId
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.matrix.api.notification.RtcNotificationType
|
||||
|
||||
data class NotifiableRingingCallEvent(
|
||||
|
|
@ -29,6 +30,7 @@ data class NotifiableRingingCallEvent(
|
|||
val senderAvatarUrl: String?,
|
||||
val roomAvatarUrl: String? = null,
|
||||
val rtcNotificationType: RtcNotificationType,
|
||||
val callIntent: CallIntent,
|
||||
val timestamp: Long,
|
||||
val expirationTimestamp: Long,
|
||||
) : NotifiableEvent
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ import io.element.android.libraries.di.annotations.AppCoroutineScope
|
|||
import io.element.android.libraries.featureflag.api.FeatureFlagService
|
||||
import io.element.android.libraries.featureflag.api.FeatureFlags
|
||||
import io.element.android.libraries.matrix.api.exception.NotificationResolverException
|
||||
import io.element.android.libraries.matrix.api.notification.CallIntent
|
||||
import io.element.android.libraries.push.api.push.NotificationEventRequest
|
||||
import io.element.android.libraries.push.api.push.SyncOnNotifiableEvent
|
||||
import io.element.android.libraries.push.impl.history.PushHistoryService
|
||||
|
|
@ -303,8 +304,7 @@ class DefaultPushHandler(
|
|||
callType = CallType.RoomCall(
|
||||
notifiableEvent.sessionId,
|
||||
notifiableEvent.roomId,
|
||||
// TODO
|
||||
voiceIntent = false
|
||||
voiceIntent = notifiableEvent.callIntent == CallIntent.AUDIO
|
||||
),
|
||||
eventId = notifiableEvent.eventId,
|
||||
senderId = notifiableEvent.senderId,
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@
|
|||
<item quantity="one">"You have %d new message."</item>
|
||||
<item quantity="other">"You have %d new messages."</item>
|
||||
</plurals>
|
||||
<string name="notification_incoming_audio_call">"📞 Incoming call"</string>
|
||||
<string name="notification_incoming_call">"📹 Incoming call"</string>
|
||||
<string name="notification_inline_reply_failed">"** Failed to send - please open room"</string>
|
||||
<string name="notification_invitation_action_join">"Join"</string>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue