Dial pad: fix dial pad lookup when result is virtual user
This commit is contained in:
parent
771b9b8d78
commit
b268d23e58
@ -17,10 +17,11 @@
|
|||||||
package im.vector.app.features.call.dialpad
|
package im.vector.app.features.call.dialpad
|
||||||
|
|
||||||
import im.vector.app.features.call.lookup.pstnLookup
|
import im.vector.app.features.call.lookup.pstnLookup
|
||||||
|
import im.vector.app.features.call.lookup.sipNativeLookup
|
||||||
|
import im.vector.app.features.call.vectorCallService
|
||||||
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
import im.vector.app.features.call.webrtc.WebRtcCallManager
|
||||||
import im.vector.app.features.createdirect.DirectRoomHelper
|
import im.vector.app.features.createdirect.DirectRoomHelper
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
import java.lang.IllegalStateException
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class DialPadLookup @Inject constructor(
|
class DialPadLookup @Inject constructor(
|
||||||
@ -33,8 +34,16 @@ class DialPadLookup @Inject constructor(
|
|||||||
data class Result(val userId: String, val roomId: String)
|
data class Result(val userId: String, val roomId: String)
|
||||||
|
|
||||||
suspend fun lookupPhoneNumber(phoneNumber: String): Result {
|
suspend fun lookupPhoneNumber(phoneNumber: String): Result {
|
||||||
|
session.vectorCallService.protocolChecker.awaitCheckProtocols()
|
||||||
val thirdPartyUser = session.pstnLookup(phoneNumber, webRtcCallManager.supportedPSTNProtocol).firstOrNull() ?: throw IllegalStateException()
|
val thirdPartyUser = session.pstnLookup(phoneNumber, webRtcCallManager.supportedPSTNProtocol).firstOrNull() ?: throw IllegalStateException()
|
||||||
val roomId = directRoomHelper.ensureDMExists(thirdPartyUser.userId)
|
// check to see if this is a virtual user, in which case we should find the native user
|
||||||
return Result(userId = thirdPartyUser.userId, roomId = roomId)
|
val nativeUserId = if (webRtcCallManager.supportsVirtualRooms) {
|
||||||
|
val nativeLookupResults = session.sipNativeLookup(thirdPartyUser.userId)
|
||||||
|
nativeLookupResults.firstOrNull()?.userId ?: thirdPartyUser.userId
|
||||||
|
} else {
|
||||||
|
thirdPartyUser.userId
|
||||||
|
}
|
||||||
|
val roomId = directRoomHelper.ensureDMExists(nativeUserId)
|
||||||
|
return Result(userId = nativeUserId, roomId = roomId)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user