Merge pull request #6101 from chagai95/native-lookup-fixes

Native lookup fixes
This commit is contained in:
Benoit Marty 2022-06-28 15:43:35 +02:00 committed by GitHub
commit 6fda2cc7b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 8 deletions

1
changelog.d/6101.bugfix Normal file
View File

@ -0,0 +1 @@
Refactor - better naming, return native user id and not sip user id and create a dm with the native user instead of with the sip user.

View File

@ -22,6 +22,7 @@ import im.vector.app.features.call.vectorCallService
import im.vector.app.features.call.webrtc.WebRtcCallManager
import im.vector.app.features.createdirect.DirectRoomHelper
import org.matrix.android.sdk.api.session.Session
import timber.log.Timber
import javax.inject.Inject
class DialPadLookup @Inject constructor(
@ -42,18 +43,23 @@ class DialPadLookup @Inject constructor(
val sipUserId = thirdPartyUser.userId
val nativeLookupResults = session.sipNativeLookup(thirdPartyUser.userId)
// If I have a native user I check for an existing native room with him...
val roomId = if (nativeLookupResults.isNotEmpty()) {
if (nativeLookupResults.isNotEmpty()) {
val nativeUserId = nativeLookupResults.first().userId
if (nativeUserId == session.myUserId) {
throw Failure.NumberIsYours
}
session.roomService().getExistingDirectRoomWithUser(nativeUserId)
// if there is not, just create a DM with the sip user
?: directRoomHelper.ensureDMExists(sipUserId)
} else {
// do the same if there is no corresponding native user.
directRoomHelper.ensureDMExists(sipUserId)
var nativeRoomId = session.roomService().getExistingDirectRoomWithUser(nativeUserId)
if (nativeRoomId == null) {
// if there is no existing native room with the existing native user,
// just create a DM with the native user
nativeRoomId = directRoomHelper.ensureDMExists(nativeUserId)
}
Timber.d("lookupPhoneNumber with nativeUserId: $nativeUserId and nativeRoomId: $nativeRoomId")
return Result(userId = nativeUserId, roomId = nativeRoomId)
}
return Result(userId = sipUserId, roomId = roomId)
// If there is no native user then we return sipUserId and sipRoomId - this is usually a PSTN call.
val sipRoomId = directRoomHelper.ensureDMExists(sipUserId)
Timber.d("lookupPhoneNumber with sipRoomId: $sipRoomId and sipUserId: $sipUserId")
return Result(userId = sipUserId, roomId = sipRoomId)
}
}