Rename Android Service to use AndroidService suffix to limit confusion with our Matrix SDK Services

This commit is contained in:
Benoit Marty 2022-07-04 21:38:53 +02:00
parent 2c444527bd
commit f0c8c3fd63
16 changed files with 56 additions and 55 deletions

View file

@ -43,7 +43,7 @@
</receiver> </receiver>
<service <service
android:name=".fdroid.service.GuardService" android:name=".fdroid.service.GuardAndroidService"
android:exported="false" android:exported="false"
tools:ignore="Instantiatable" /> tools:ignore="Instantiatable" />

View file

@ -33,7 +33,7 @@ class FDroidGuardServiceStarter @Inject constructor(
if (preferences.isBackgroundSyncEnabled()) { if (preferences.isBackgroundSyncEnabled()) {
try { try {
Timber.i("## Sync: starting GuardService") Timber.i("## Sync: starting GuardService")
val intent = Intent(appContext, GuardService::class.java) val intent = Intent(appContext, GuardAndroidService::class.java)
ContextCompat.startForegroundService(appContext, intent) ContextCompat.startForegroundService(appContext, intent)
} catch (ex: Throwable) { } catch (ex: Throwable) {
Timber.e("## Sync: ERROR starting GuardService") Timber.e("## Sync: ERROR starting GuardService")
@ -42,7 +42,7 @@ class FDroidGuardServiceStarter @Inject constructor(
} }
override fun stop() { override fun stop() {
val intent = Intent(appContext, GuardService::class.java) val intent = Intent(appContext, GuardAndroidService::class.java)
appContext.stopService(intent) appContext.stopService(intent)
} }
} }

View file

@ -18,7 +18,7 @@ package im.vector.app.fdroid.service
import android.content.Intent import android.content.Intent
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.services.VectorService import im.vector.app.core.services.VectorAndroidService
import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.notifications.NotificationUtils
import javax.inject.Inject import javax.inject.Inject
@ -29,7 +29,7 @@ import javax.inject.Inject
* when the app is not in the foreground. * when the app is not in the foreground.
*/ */
@AndroidEntryPoint @AndroidEntryPoint
class GuardService : VectorService() { class GuardAndroidService : VectorAndroidService() {
@Inject lateinit var notificationUtils: NotificationUtils @Inject lateinit var notificationUtils: NotificationUtils

View file

@ -351,7 +351,7 @@
<!-- Services --> <!-- Services -->
<service <service
android:name=".core.services.CallService" android:name=".core.services.CallAndroidService"
android:exported="false"> android:exported="false">
<!-- in order to get headset button events --> <!-- in order to get headset button events -->
<intent-filter> <intent-filter>
@ -366,7 +366,7 @@
tools:ignore="Instantiatable" /> tools:ignore="Instantiatable" />
<service <service
android:name=".features.call.telecom.VectorConnectionService" android:name=".features.call.telecom.VectorConnectionAndroidService"
android:exported="false" android:exported="false"
android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"> android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE">
<intent-filter> <intent-filter>
@ -375,12 +375,12 @@
</service> </service>
<service <service
android:name=".features.location.LocationSharingService" android:name=".features.location.LocationSharingAndroidService"
android:exported="false" android:exported="false"
android:foregroundServiceType="location" /> android:foregroundServiceType="location" />
<service <service
android:name=".features.call.webrtc.ScreenCaptureService" android:name=".features.call.webrtc.ScreenCaptureAndroidService"
android:exported="false" android:exported="false"
android:foregroundServiceType="mediaProjection" android:foregroundServiceType="mediaProjection"
tools:targetApi="Q" /> tools:targetApi="Q" />

View file

@ -51,7 +51,7 @@ private val loggerTag = LoggerTag("CallService", LoggerTag.VOIP)
* Foreground service to manage calls. * Foreground service to manage calls.
*/ */
@AndroidEntryPoint @AndroidEntryPoint
class CallService : VectorService() { class CallAndroidService : VectorAndroidService() {
private val connections = mutableMapOf<String, CallConnection>() private val connections = mutableMapOf<String, CallConnection>()
private val knownCalls = mutableMapOf<String, CallInformation>() private val knownCalls = mutableMapOf<String, CallInformation>()
@ -98,7 +98,7 @@ class CallService : VectorService() {
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
Timber.tag(loggerTag.value).v("onStartCommand $intent") Timber.tag(loggerTag.value).v("onStartCommand $intent")
if (mediaSession == null) { if (mediaSession == null) {
mediaSession = MediaSessionCompat(applicationContext, CallService::class.java.name).apply { mediaSession = MediaSessionCompat(applicationContext, CallAndroidService::class.java.name).apply {
setCallback(mediaSessionButtonCallback) setCallback(mediaSessionButtonCallback)
} }
} }
@ -326,7 +326,7 @@ class CallService : VectorService() {
callId: String, callId: String,
isInBackground: Boolean isInBackground: Boolean
) { ) {
val intent = Intent(context, CallService::class.java) val intent = Intent(context, CallAndroidService::class.java)
.apply { .apply {
action = ACTION_INCOMING_RINGING_CALL action = ACTION_INCOMING_RINGING_CALL
putExtra(EXTRA_CALL_ID, callId) putExtra(EXTRA_CALL_ID, callId)
@ -339,7 +339,7 @@ class CallService : VectorService() {
context: Context, context: Context,
callId: String callId: String
) { ) {
val intent = Intent(context, CallService::class.java) val intent = Intent(context, CallAndroidService::class.java)
.apply { .apply {
action = ACTION_OUTGOING_RINGING_CALL action = ACTION_OUTGOING_RINGING_CALL
putExtra(EXTRA_CALL_ID, callId) putExtra(EXTRA_CALL_ID, callId)
@ -351,7 +351,7 @@ class CallService : VectorService() {
context: Context, context: Context,
callId: String callId: String
) { ) {
val intent = Intent(context, CallService::class.java) val intent = Intent(context, CallAndroidService::class.java)
.apply { .apply {
action = ACTION_ONGOING_CALL action = ACTION_ONGOING_CALL
putExtra(EXTRA_CALL_ID, callId) putExtra(EXTRA_CALL_ID, callId)
@ -365,7 +365,7 @@ class CallService : VectorService() {
endCallReason: EndCallReason, endCallReason: EndCallReason,
rejected: Boolean rejected: Boolean
) { ) {
val intent = Intent(context, CallService::class.java) val intent = Intent(context, CallAndroidService::class.java)
.apply { .apply {
action = ACTION_CALL_TERMINATED action = ACTION_CALL_TERMINATED
putExtra(EXTRA_CALL_ID, callId) putExtra(EXTRA_CALL_ID, callId)
@ -377,8 +377,8 @@ class CallService : VectorService() {
} }
inner class CallServiceBinder : Binder() { inner class CallServiceBinder : Binder() {
fun getCallService(): CallService { fun getCallService(): CallAndroidService {
return this@CallService return this@CallAndroidService
} }
} }
} }

View file

@ -22,9 +22,9 @@ import android.os.IBinder
import timber.log.Timber import timber.log.Timber
/** /**
* Parent class for all services. * Parent class for all Android Services.
*/ */
abstract class VectorService : Service() { abstract class VectorAndroidService : Service() {
/** /**
* Tells if the service self destroyed. * Tells if the service self destroyed.

View file

@ -59,7 +59,7 @@ import im.vector.app.features.call.dialpad.CallDialPadBottomSheet
import im.vector.app.features.call.dialpad.DialPadFragment import im.vector.app.features.call.dialpad.DialPadFragment
import im.vector.app.features.call.transfer.CallTransferActivity import im.vector.app.features.call.transfer.CallTransferActivity
import im.vector.app.features.call.utils.EglUtils import im.vector.app.features.call.utils.EglUtils
import im.vector.app.features.call.webrtc.ScreenCaptureService import im.vector.app.features.call.webrtc.ScreenCaptureAndroidService
import im.vector.app.features.call.webrtc.ScreenCaptureServiceConnection import im.vector.app.features.call.webrtc.ScreenCaptureServiceConnection
import im.vector.app.features.call.webrtc.WebRtcCall import im.vector.app.features.call.webrtc.WebRtcCall
import im.vector.app.features.call.webrtc.WebRtcCallManager import im.vector.app.features.call.webrtc.WebRtcCallManager
@ -663,7 +663,7 @@ class VectorCallActivity : VectorBaseActivity<ActivityCallBinding>(), CallContro
private fun startScreenSharingService(activityResult: ActivityResult) { private fun startScreenSharingService(activityResult: ActivityResult) {
ContextCompat.startForegroundService( ContextCompat.startForegroundService(
this, this,
Intent(this, ScreenCaptureService::class.java) Intent(this, ScreenCaptureAndroidService::class.java)
) )
bindToScreenCaptureService(activityResult) bindToScreenCaptureService(activityResult)
} }

View file

@ -29,7 +29,7 @@ import android.telecom.PhoneAccountHandle
import android.telecom.StatusHints import android.telecom.StatusHints
import android.telecom.TelecomManager import android.telecom.TelecomManager
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import im.vector.app.core.services.CallService import im.vector.app.core.services.CallAndroidService
/** /**
* No active calls in other apps * No active calls in other apps
@ -47,7 +47,7 @@ import im.vector.app.core.services.CallService
* the parameter followed by a call to the destroy() method if the user rejects the incoming call. * the parameter followed by a call to the destroy() method if the user rejects the incoming call.
*</pre> *</pre>
*/ */
@RequiresApi(Build.VERSION_CODES.M) class VectorConnectionService : ConnectionService() { @RequiresApi(Build.VERSION_CODES.M) class VectorConnectionAndroidService : ConnectionService() {
/** /**
* The telecom subsystem calls this method in response to your app calling placeCall(Uri, Bundle) to create a new outgoing call. * The telecom subsystem calls this method in response to your app calling placeCall(Uri, Bundle) to create a new outgoing call.
@ -69,14 +69,14 @@ import im.vector.app.core.services.CallService
connection.setCallerDisplayName("Element Caller", TelecomManager.PRESENTATION_ALLOWED) connection.setCallerDisplayName("Element Caller", TelecomManager.PRESENTATION_ALLOWED)
connection.statusHints = StatusHints("Testing Hint...", null, null) connection.statusHints = StatusHints("Testing Hint...", null, null)
bindService(Intent(applicationContext, CallService::class.java), CallServiceConnection(connection), 0) bindService(Intent(applicationContext, CallAndroidService::class.java), CallServiceConnection(connection), 0)
connection.setInitializing() connection.setInitializing()
return connection return connection
} }
inner class CallServiceConnection(private val callConnection: CallConnection) : ServiceConnection { inner class CallServiceConnection(private val callConnection: CallConnection) : ServiceConnection {
override fun onServiceConnected(name: ComponentName?, binder: IBinder?) { override fun onServiceConnected(name: ComponentName?, binder: IBinder?) {
val callSrvBinder = binder as CallService.CallServiceBinder val callSrvBinder = binder as CallAndroidService.CallServiceBinder
callSrvBinder.getCallService().addConnection(callConnection) callSrvBinder.getCallService().addConnection(callConnection)
unbindService(this) unbindService(this)
} }

View file

@ -20,13 +20,13 @@ import android.content.Intent
import android.os.Binder import android.os.Binder
import android.os.IBinder import android.os.IBinder
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.core.services.VectorService import im.vector.app.core.services.VectorAndroidService
import im.vector.app.core.time.Clock import im.vector.app.core.time.Clock
import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.notifications.NotificationUtils
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class ScreenCaptureService : VectorService() { class ScreenCaptureAndroidService : VectorAndroidService() {
@Inject lateinit var notificationUtils: NotificationUtils @Inject lateinit var notificationUtils: NotificationUtils
@Inject lateinit var clock: Clock @Inject lateinit var clock: Clock
@ -53,6 +53,6 @@ class ScreenCaptureService : VectorService() {
} }
inner class LocalBinder : Binder() { inner class LocalBinder : Binder() {
fun getService(): ScreenCaptureService = this@ScreenCaptureService fun getService(): ScreenCaptureAndroidService = this@ScreenCaptureAndroidService
} }
} }

View file

@ -32,7 +32,7 @@ class ScreenCaptureServiceConnection @Inject constructor(
} }
private var isBound = false private var isBound = false
private var screenCaptureService: ScreenCaptureService? = null private var screenCaptureAndroidService: ScreenCaptureAndroidService? = null
private var callback: Callback? = null private var callback: Callback? = null
fun bind(callback: Callback) { fun bind(callback: Callback) {
@ -41,25 +41,25 @@ class ScreenCaptureServiceConnection @Inject constructor(
if (isBound) { if (isBound) {
callback.onServiceConnected() callback.onServiceConnected()
} else { } else {
Intent(context, ScreenCaptureService::class.java).also { intent -> Intent(context, ScreenCaptureAndroidService::class.java).also { intent ->
context.bindService(intent, this, 0) context.bindService(intent, this, 0)
} }
} }
} }
fun stopScreenCapturing() { fun stopScreenCapturing() {
screenCaptureService?.stopService() screenCaptureAndroidService?.stopService()
} }
override fun onServiceConnected(className: ComponentName, binder: IBinder) { override fun onServiceConnected(className: ComponentName, binder: IBinder) {
screenCaptureService = (binder as ScreenCaptureService.LocalBinder).getService() screenCaptureAndroidService = (binder as ScreenCaptureAndroidService.LocalBinder).getService()
isBound = true isBound = true
callback?.onServiceConnected() callback?.onServiceConnected()
} }
override fun onServiceDisconnected(className: ComponentName) { override fun onServiceDisconnected(className: ComponentName) {
isBound = false isBound = false
screenCaptureService = null screenCaptureAndroidService = null
callback = null callback = null
} }
} }

View file

@ -19,7 +19,7 @@ package im.vector.app.features.call.webrtc
import android.content.Context import android.content.Context
import android.hardware.camera2.CameraManager import android.hardware.camera2.CameraManager
import androidx.core.content.getSystemService import androidx.core.content.getSystemService
import im.vector.app.core.services.CallService import im.vector.app.core.services.CallAndroidService
import im.vector.app.core.utils.PublishDataSource import im.vector.app.core.utils.PublishDataSource
import im.vector.app.core.utils.TextUtils.formatDuration import im.vector.app.core.utils.TextUtils.formatDuration
import im.vector.app.features.call.CameraEventsHandlerAdapter import im.vector.app.features.call.CameraEventsHandlerAdapter
@ -477,7 +477,7 @@ class WebRtcCall(
val turnServerResponse = getTurnServer() val turnServerResponse = getTurnServer()
// Update service state // Update service state
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
CallService.onPendingCall( CallAndroidService.onPendingCall(
context = context, context = context,
callId = mxCall.callId callId = mxCall.callId
) )

View file

@ -22,7 +22,7 @@ import androidx.lifecycle.LifecycleOwner
import im.vector.app.ActiveSessionDataSource import im.vector.app.ActiveSessionDataSource
import im.vector.app.BuildConfig import im.vector.app.BuildConfig
import im.vector.app.core.pushers.UnifiedPushHelper import im.vector.app.core.pushers.UnifiedPushHelper
import im.vector.app.core.services.CallService import im.vector.app.core.services.CallAndroidService
import im.vector.app.features.analytics.AnalyticsTracker import im.vector.app.features.analytics.AnalyticsTracker
import im.vector.app.features.analytics.plan.CallEnded import im.vector.app.features.analytics.plan.CallEnded
import im.vector.app.features.analytics.plan.CallStarted import im.vector.app.features.analytics.plan.CallStarted
@ -254,7 +254,7 @@ class WebRtcCallManager @Inject constructor(
Timber.tag(loggerTag.value).v("On call ended for unknown call $callId") Timber.tag(loggerTag.value).v("On call ended for unknown call $callId")
} }
webRtcCall.trackCallEnded() webRtcCall.trackCallEnded()
CallService.onCallTerminated(context, callId, endCallReason, rejected) CallAndroidService.onCallTerminated(context, callId, endCallReason, rejected)
callsByRoomId[webRtcCall.signalingRoomId]?.remove(webRtcCall) callsByRoomId[webRtcCall.signalingRoomId]?.remove(webRtcCall)
callsByRoomId[webRtcCall.nativeRoomId]?.remove(webRtcCall) callsByRoomId[webRtcCall.nativeRoomId]?.remove(webRtcCall)
transferees.remove(callId) transferees.remove(callId)
@ -305,7 +305,7 @@ class WebRtcCallManager @Inject constructor(
if (transferee != null) { if (transferee != null) {
transferees[webRtcCall.callId] = transferee transferees[webRtcCall.callId] = transferee
} }
CallService.onOutgoingCallRinging( CallAndroidService.onOutgoingCallRinging(
context = context.applicationContext, context = context.applicationContext,
callId = mxCall.callId callId = mxCall.callId
) )
@ -370,7 +370,7 @@ class WebRtcCallManager @Inject constructor(
offerSdp = callInviteContent.offer offerSdp = callInviteContent.offer
} }
// Start background service with notification // Start background service with notification
CallService.onIncomingCallRinging( CallAndroidService.onIncomingCallRinging(
context = context, context = context,
callId = mxCall.callId, callId = mxCall.callId,
isInBackground = isInBackground isInBackground = isInBackground
@ -395,7 +395,7 @@ class WebRtcCallManager @Inject constructor(
} }
val mxCall = call.mxCall val mxCall = call.mxCall
// Update service state // Update service state
CallService.onPendingCall( CallAndroidService.onPendingCall(
context = context, context = context,
callId = mxCall.callId callId = mxCall.callId
) )

View file

@ -23,7 +23,7 @@ import android.os.Parcelable
import dagger.hilt.android.AndroidEntryPoint import dagger.hilt.android.AndroidEntryPoint
import im.vector.app.R import im.vector.app.R
import im.vector.app.core.di.ActiveSessionHolder import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.services.VectorService import im.vector.app.core.services.VectorAndroidService
import im.vector.app.features.location.live.GetLiveLocationShareSummaryUseCase import im.vector.app.features.location.live.GetLiveLocationShareSummaryUseCase
import im.vector.app.features.notifications.NotificationUtils import im.vector.app.features.notifications.NotificationUtils
import im.vector.app.features.session.coroutineScope import im.vector.app.features.session.coroutineScope
@ -42,7 +42,7 @@ import timber.log.Timber
import javax.inject.Inject import javax.inject.Inject
@AndroidEntryPoint @AndroidEntryPoint
class LocationSharingService : VectorService(), LocationTracker.Callback { class LocationSharingAndroidService : VectorAndroidService(), LocationTracker.Callback {
@Parcelize @Parcelize
data class RoomArgs( data class RoomArgs(
@ -80,7 +80,7 @@ class LocationSharingService : VectorService(), LocationTracker.Callback {
launchWithActiveSession { session -> launchWithActiveSession { session ->
val job = locationTracker.locations val job = locationTracker.locations
.onEach(this@LocationSharingService::onLocationUpdate) .onEach(this@LocationSharingAndroidService::onLocationUpdate)
.launchIn(session.coroutineScope) .launchIn(session.coroutineScope)
jobs.add(job) jobs.add(job)
} }
@ -225,7 +225,7 @@ class LocationSharingService : VectorService(), LocationTracker.Callback {
} }
inner class LocalBinder : Binder() { inner class LocalBinder : Binder() {
fun getService(): LocationSharingService = this@LocationSharingService fun getService(): LocationSharingAndroidService = this@LocationSharingAndroidService
} }
interface Callback { interface Callback {

View file

@ -179,10 +179,10 @@ class LocationSharingFragment @Inject constructor(
} }
private fun handleStartLiveLocationService(event: LocationSharingViewEvents.StartLiveLocationService) { private fun handleStartLiveLocationService(event: LocationSharingViewEvents.StartLiveLocationService) {
val args = LocationSharingService.RoomArgs(event.sessionId, event.roomId, event.durationMillis) val args = LocationSharingAndroidService.RoomArgs(event.sessionId, event.roomId, event.durationMillis)
Intent(requireContext(), LocationSharingService::class.java) Intent(requireContext(), LocationSharingAndroidService::class.java)
.putExtra(LocationSharingService.EXTRA_ROOM_ARGS, args) .putExtra(LocationSharingAndroidService.EXTRA_ROOM_ARGS, args)
.also { .also {
ContextCompat.startForegroundService(requireContext(), it) ContextCompat.startForegroundService(requireContext(), it)
} }

View file

@ -27,7 +27,8 @@ import javax.inject.Singleton
@Singleton @Singleton
class LocationSharingServiceConnection @Inject constructor( class LocationSharingServiceConnection @Inject constructor(
private val context: Context private val context: Context
) : ServiceConnection, LocationSharingService.Callback { ) : ServiceConnection,
LocationSharingAndroidService.Callback {
interface Callback { interface Callback {
fun onLocationServiceRunning() fun onLocationServiceRunning()
@ -37,7 +38,7 @@ class LocationSharingServiceConnection @Inject constructor(
private val callbacks = mutableSetOf<Callback>() private val callbacks = mutableSetOf<Callback>()
private var isBound = false private var isBound = false
private var locationSharingService: LocationSharingService? = null private var locationSharingAndroidService: LocationSharingAndroidService? = null
fun bind(callback: Callback) { fun bind(callback: Callback) {
addCallback(callback) addCallback(callback)
@ -45,7 +46,7 @@ class LocationSharingServiceConnection @Inject constructor(
if (isBound) { if (isBound) {
callback.onLocationServiceRunning() callback.onLocationServiceRunning()
} else { } else {
Intent(context, LocationSharingService::class.java).also { intent -> Intent(context, LocationSharingAndroidService::class.java).also { intent ->
context.bindService(intent, this, 0) context.bindService(intent, this, 0)
} }
} }
@ -56,7 +57,7 @@ class LocationSharingServiceConnection @Inject constructor(
} }
override fun onServiceConnected(className: ComponentName, binder: IBinder) { override fun onServiceConnected(className: ComponentName, binder: IBinder) {
locationSharingService = (binder as LocationSharingService.LocalBinder).getService().also { locationSharingAndroidService = (binder as LocationSharingAndroidService.LocalBinder).getService().also {
it.callback = this it.callback = this
} }
isBound = true isBound = true
@ -65,8 +66,8 @@ class LocationSharingServiceConnection @Inject constructor(
override fun onServiceDisconnected(className: ComponentName) { override fun onServiceDisconnected(className: ComponentName) {
isBound = false isBound = false
locationSharingService?.callback = null locationSharingAndroidService?.callback = null
locationSharingService = null locationSharingAndroidService = null
onCallbackActionNoArg(Callback::onLocationServiceStopped) onCallbackActionNoArg(Callback::onLocationServiceStopped)
} }

View file

@ -50,7 +50,7 @@ import im.vector.app.R
import im.vector.app.core.extensions.createIgnoredUri import im.vector.app.core.extensions.createIgnoredUri
import im.vector.app.core.platform.PendingIntentCompat import im.vector.app.core.platform.PendingIntentCompat
import im.vector.app.core.resources.StringProvider import im.vector.app.core.resources.StringProvider
import im.vector.app.core.services.CallService import im.vector.app.core.services.CallAndroidService
import im.vector.app.core.time.Clock import im.vector.app.core.time.Clock
import im.vector.app.core.utils.startNotificationChannelSettingsIntent import im.vector.app.core.utils.startNotificationChannelSettingsIntent
import im.vector.app.features.call.VectorCallActivity import im.vector.app.features.call.VectorCallActivity
@ -512,7 +512,7 @@ class NotificationUtils @Inject constructor(
/** /**
* Build notification for the CallService, when a call is missed. * Build notification for the CallService, when a call is missed.
*/ */
fun buildCallMissedNotification(callInformation: CallService.CallInformation): Notification { fun buildCallMissedNotification(callInformation: CallAndroidService.CallInformation): Notification {
val builder = NotificationCompat.Builder(context, SILENT_NOTIFICATION_CHANNEL_ID) val builder = NotificationCompat.Builder(context, SILENT_NOTIFICATION_CHANNEL_ID)
.setContentTitle(callInformation.opponentMatrixItem?.getBestName() ?: callInformation.opponentUserId) .setContentTitle(callInformation.opponentMatrixItem?.getBestName() ?: callInformation.opponentUserId)
.apply { .apply {