mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-16 02:05:06 +08:00
Fix other potential issue when using Session.getUser()
This commit is contained in:
parent
032fa37b64
commit
7699628959
@ -29,7 +29,7 @@ import im.vector.app.core.di.ActiveSessionHolder
|
||||
import im.vector.app.core.glide.GlideApp
|
||||
import im.vector.app.core.utils.DimensionConverter
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
@ -67,9 +67,9 @@ class LocationPinProvider @Inject constructor(
|
||||
|
||||
activeSessionHolder
|
||||
.getActiveSession()
|
||||
.getUser(userId)
|
||||
?.toMatrixItem()
|
||||
?.let { userItem ->
|
||||
.getUserOrDefault(userId)
|
||||
.toMatrixItem()
|
||||
.let { userItem ->
|
||||
val size = dimensionConverter.dpToPx(44)
|
||||
val bgTintColor = matrixItemColorProvider.getColor(userItem)
|
||||
avatarRenderer.render(glideRequests, userItem, object : CustomTarget<Drawable>(size, size) {
|
||||
|
@ -27,7 +27,7 @@ import im.vector.app.core.glide.GlideApp
|
||||
import im.vector.app.features.home.AvatarRenderer
|
||||
import io.noties.markwon.core.spans.LinkSpan
|
||||
import org.matrix.android.sdk.api.session.getRoomSummary
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.permalinks.PermalinkData
|
||||
import org.matrix.android.sdk.api.session.permalinks.PermalinkParser
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
@ -101,7 +101,7 @@ class PillsPostProcessor @AssistedInject constructor(
|
||||
|
||||
private fun PermalinkData.UserLink.toMatrixItem(roomId: String?): MatrixItem? =
|
||||
if (roomId == null) {
|
||||
sessionHolder.getSafeActiveSession()?.getUser(userId)?.toMatrixItem()
|
||||
sessionHolder.getSafeActiveSession()?.getUserOrDefault(userId)?.toMatrixItem()
|
||||
} else {
|
||||
sessionHolder.getSafeActiveSession()?.roomService()?.getRoomMember(userId, roomId)?.toMatrixItem()
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ import org.matrix.android.sdk.api.extensions.orFalse
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.events.model.EventType
|
||||
import org.matrix.android.sdk.api.session.getRoom
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.room.powerlevels.PowerLevelsHelper
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import timber.log.Timber
|
||||
@ -101,7 +101,7 @@ class LocationSharingViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun setUserItem() {
|
||||
setState { copy(userItem = session.getUser(session.myUserId)?.toMatrixItem()) }
|
||||
setState { copy(userItem = session.getUserOrDefault(session.myUserId).toMatrixItem()) }
|
||||
}
|
||||
|
||||
private fun updatePin(isUserPin: Boolean? = true) {
|
||||
|
@ -20,7 +20,7 @@ import im.vector.app.core.di.ActiveSessionHolder
|
||||
import im.vector.app.features.home.room.detail.timeline.helper.LocationPinProvider
|
||||
import im.vector.app.features.location.toLocationData
|
||||
import kotlinx.coroutines.suspendCancellableCoroutine
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.room.model.livelocation.LiveLocationShareAggregatedSummary
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import javax.inject.Inject
|
||||
@ -45,19 +45,17 @@ class UserLiveLocationViewStateMapper @Inject constructor(
|
||||
else -> {
|
||||
locationPinProvider.create(userId) { pinDrawable ->
|
||||
val session = activeSessionHolder.getActiveSession()
|
||||
session.getUser(userId)?.toMatrixItem()?.let { matrixItem ->
|
||||
val locationTimestampMillis = liveLocationShareAggregatedSummary.lastLocationDataContent?.getBestTimestampMillis()
|
||||
val viewState = UserLiveLocationViewState(
|
||||
matrixItem = matrixItem,
|
||||
pinDrawable = pinDrawable,
|
||||
locationData = locationData,
|
||||
endOfLiveTimestampMillis = liveLocationShareAggregatedSummary.endOfLiveTimestampMillis,
|
||||
locationTimestampMillis = locationTimestampMillis,
|
||||
showStopSharingButton = userId == session.myUserId
|
||||
)
|
||||
continuation.resume(viewState) {
|
||||
// do nothing on cancellation
|
||||
}
|
||||
val locationTimestampMillis = liveLocationShareAggregatedSummary.lastLocationDataContent?.getBestTimestampMillis()
|
||||
val viewState = UserLiveLocationViewState(
|
||||
matrixItem = session.getUserOrDefault(userId).toMatrixItem(),
|
||||
pinDrawable = pinDrawable,
|
||||
locationData = locationData,
|
||||
endOfLiveTimestampMillis = liveLocationShareAggregatedSummary.endOfLiveTimestampMillis,
|
||||
locationTimestampMillis = locationTimestampMillis,
|
||||
showStopSharingButton = userId == session.myUserId
|
||||
)
|
||||
continuation.resume(viewState) {
|
||||
// do nothing on cancellation
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -38,7 +38,7 @@ import org.matrix.android.sdk.api.session.events.model.supportsNotification
|
||||
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||
import org.matrix.android.sdk.api.session.getRoom
|
||||
import org.matrix.android.sdk.api.session.getRoomSummary
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.room.getTimelineEvent
|
||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberContent
|
||||
@ -112,7 +112,7 @@ class NotifiableEventResolver @Inject constructor(
|
||||
val notificationAction = actions.toNotificationAction()
|
||||
|
||||
return if (notificationAction.shouldNotify) {
|
||||
val user = session.getUser(event.senderId!!) ?: return null
|
||||
val user = session.getUserOrDefault(event.senderId!!)
|
||||
|
||||
val timelineEvent = TimelineEvent(
|
||||
root = event,
|
||||
|
@ -27,7 +27,7 @@ import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.settings.VectorPreferences
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.content.ContentUrlResolver
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import timber.log.Timber
|
||||
import javax.inject.Inject
|
||||
@ -186,11 +186,11 @@ class NotificationDrawerManager @Inject constructor(
|
||||
}
|
||||
|
||||
private fun renderEvents(session: Session, eventsToRender: List<ProcessedEvent<NotifiableEvent>>) {
|
||||
val user = session.getUser(session.myUserId)
|
||||
val user = session.getUserOrDefault(session.myUserId)
|
||||
// myUserDisplayName cannot be empty else NotificationCompat.MessagingStyle() will crash
|
||||
val myUserDisplayName = user?.toMatrixItem()?.getBestName() ?: session.myUserId
|
||||
val myUserDisplayName = user.toMatrixItem().getBestName()
|
||||
val myUserAvatarUrl = session.contentUrlResolver().resolveThumbnail(
|
||||
contentUrl = user?.avatarUrl,
|
||||
contentUrl = user.avatarUrl,
|
||||
width = avatarSize,
|
||||
height = avatarSize,
|
||||
method = ContentUrlResolver.ThumbnailMethod.SCALE
|
||||
|
@ -32,6 +32,7 @@ import im.vector.app.core.di.SingletonEntryPoint
|
||||
import im.vector.app.core.di.hiltMavericksViewModelFactory
|
||||
import im.vector.app.core.extensions.hasUnsavedKeys
|
||||
import im.vector.app.core.platform.VectorViewModel
|
||||
import im.vector.app.features.displayname.getBestName
|
||||
import im.vector.app.features.login.LoginMode
|
||||
import im.vector.app.features.login.toSsoState
|
||||
import kotlinx.coroutines.launch
|
||||
@ -39,7 +40,8 @@ import org.matrix.android.sdk.api.auth.AuthenticationService
|
||||
import org.matrix.android.sdk.api.auth.LoginType
|
||||
import org.matrix.android.sdk.api.auth.data.LoginFlowTypes
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.util.toMatrixItem
|
||||
import timber.log.Timber
|
||||
|
||||
class SoftLogoutViewModel @AssistedInject constructor(
|
||||
@ -68,7 +70,7 @@ class SoftLogoutViewModel @AssistedInject constructor(
|
||||
homeServerUrl = session.sessionParams.homeServerUrl,
|
||||
userId = userId,
|
||||
deviceId = session.sessionParams.deviceId.orEmpty(),
|
||||
userDisplayName = session.getUser(userId)?.displayName ?: userId,
|
||||
userDisplayName = session.getUserOrDefault(userId).toMatrixItem().getBestName(),
|
||||
hasUnsavedKeys = session.hasUnsavedKeys(),
|
||||
loginType = session.sessionParams.loginType,
|
||||
)
|
||||
|
@ -34,7 +34,7 @@ import kotlinx.coroutines.launch
|
||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.getRoomSummary
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
import org.matrix.android.sdk.api.session.room.peeking.PeekResult
|
||||
@ -49,7 +49,7 @@ class SpaceInviteBottomSheetViewModel @AssistedInject constructor(
|
||||
session.getRoomSummary(initialState.spaceId)?.let { roomSummary ->
|
||||
val knownMembers = roomSummary.otherMemberIds.filter {
|
||||
session.roomService().getExistingDirectRoomWithUser(it) != null
|
||||
}.mapNotNull { session.getUser(it) }
|
||||
}.map { session.getUserOrDefault(it) }
|
||||
// put one with avatar first, and take 5
|
||||
val peopleYouKnow = (knownMembers.filter { it.avatarUrl != null } + knownMembers.filter { it.avatarUrl == null })
|
||||
.take(5)
|
||||
@ -57,7 +57,7 @@ class SpaceInviteBottomSheetViewModel @AssistedInject constructor(
|
||||
setState {
|
||||
copy(
|
||||
summary = Success(roomSummary),
|
||||
inviterUser = roomSummary.inviterId?.let { session.getUser(it) }?.let { Success(it) } ?: Uninitialized,
|
||||
inviterUser = roomSummary.inviterId?.let { session.getUserOrDefault(it) }?.let { Success(it) } ?: Uninitialized,
|
||||
peopleYouKnow = Success(peopleYouKnow)
|
||||
)
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
import org.matrix.android.sdk.api.extensions.tryOrNull
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.getUser
|
||||
import org.matrix.android.sdk.api.session.getUserOrDefault
|
||||
import org.matrix.android.sdk.api.session.permalinks.PermalinkData
|
||||
import org.matrix.android.sdk.api.session.permalinks.PermalinkParser
|
||||
import org.matrix.android.sdk.api.session.user.model.User
|
||||
@ -46,10 +46,10 @@ class UserCodeSharedViewModel @AssistedInject constructor(
|
||||
companion object : MavericksViewModelFactory<UserCodeSharedViewModel, UserCodeState> by hiltMavericksViewModelFactory()
|
||||
|
||||
init {
|
||||
val user = session.getUser(initialState.userId)
|
||||
val user = session.getUserOrDefault(initialState.userId)
|
||||
setState {
|
||||
copy(
|
||||
matrixItem = user?.toMatrixItem(),
|
||||
matrixItem = user.toMatrixItem(),
|
||||
shareLink = session.permalinkService().createPermalink(initialState.userId)
|
||||
)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user