Merge pull request #648 from vector-im/feature/fix_#498
Feature/fix #498
This commit is contained in:
commit
0e49a11e5e
@ -11,6 +11,7 @@ Other changes:
|
|||||||
-
|
-
|
||||||
|
|
||||||
Bugfix 🐛:
|
Bugfix 🐛:
|
||||||
|
- Fix issues with some member events rendering (#498)
|
||||||
- Passphrase does not match (Export room keys) (#644)
|
- Passphrase does not match (Export room keys) (#644)
|
||||||
|
|
||||||
Translations 🗣:
|
Translations 🗣:
|
||||||
|
@ -62,16 +62,12 @@ data class TimelineEvent(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getDisambiguatedDisplayName(): String {
|
fun getDisambiguatedDisplayName(): String {
|
||||||
return if (isUniqueDisplayName) {
|
return when {
|
||||||
senderName
|
senderName.isNullOrBlank() -> root.senderId ?: ""
|
||||||
} else {
|
isUniqueDisplayName -> senderName
|
||||||
senderName?.let { name ->
|
else -> "$senderName (${root.senderId})"
|
||||||
"$name (${root.senderId})"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?: root.senderId
|
|
||||||
?: ""
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the metadata associated with a key.
|
* Get the metadata associated with a key.
|
||||||
@ -113,7 +109,8 @@ fun TimelineEvent.getLastMessageBody(): String? {
|
|||||||
val lastMessageContent = getLastMessageContent()
|
val lastMessageContent = getLastMessageContent()
|
||||||
|
|
||||||
if (lastMessageContent != null) {
|
if (lastMessageContent != null) {
|
||||||
return lastMessageContent.newContent?.toModel<MessageContent>()?.body ?: lastMessageContent.body
|
return lastMessageContent.newContent?.toModel<MessageContent>()?.body
|
||||||
|
?: lastMessageContent.body
|
||||||
}
|
}
|
||||||
|
|
||||||
return null
|
return null
|
||||||
|
@ -39,14 +39,17 @@ internal fun TimelineEventEntity.updateSenderData() {
|
|||||||
val isUnlinked = chunkEntity.isUnlinked()
|
val isUnlinked = chunkEntity.isUnlinked()
|
||||||
var senderMembershipEvent: EventEntity?
|
var senderMembershipEvent: EventEntity?
|
||||||
var senderRoomMemberContent: String?
|
var senderRoomMemberContent: String?
|
||||||
|
var senderRoomMemberPrevContent: String?
|
||||||
when {
|
when {
|
||||||
stateIndex <= 0 -> {
|
stateIndex <= 0 -> {
|
||||||
senderMembershipEvent = chunkEntity.timelineEvents.buildQuery(senderId, isUnlinked).next(from = stateIndex)?.root
|
senderMembershipEvent = chunkEntity.timelineEvents.buildQuery(senderId, isUnlinked).next(from = stateIndex)?.root
|
||||||
senderRoomMemberContent = senderMembershipEvent?.prevContent
|
senderRoomMemberContent = senderMembershipEvent?.prevContent
|
||||||
|
senderRoomMemberPrevContent = senderMembershipEvent?.content
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
senderMembershipEvent = chunkEntity.timelineEvents.buildQuery(senderId, isUnlinked).prev(since = stateIndex)?.root
|
senderMembershipEvent = chunkEntity.timelineEvents.buildQuery(senderId, isUnlinked).prev(since = stateIndex)?.root
|
||||||
senderRoomMemberContent = senderMembershipEvent?.content
|
senderRoomMemberContent = senderMembershipEvent?.content
|
||||||
|
senderRoomMemberPrevContent = senderMembershipEvent?.prevContent
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -58,11 +61,27 @@ internal fun TimelineEventEntity.updateSenderData() {
|
|||||||
.equalTo(EventEntityFields.TYPE, EventType.STATE_ROOM_MEMBER)
|
.equalTo(EventEntityFields.TYPE, EventType.STATE_ROOM_MEMBER)
|
||||||
.prev(since = stateIndex)
|
.prev(since = stateIndex)
|
||||||
senderRoomMemberContent = senderMembershipEvent?.content
|
senderRoomMemberContent = senderMembershipEvent?.content
|
||||||
|
senderRoomMemberPrevContent = senderMembershipEvent?.prevContent
|
||||||
|
}
|
||||||
|
|
||||||
|
ContentMapper.map(senderRoomMemberContent).toModel<RoomMember>()?.also {
|
||||||
|
this.senderAvatar = it.avatarUrl
|
||||||
|
this.senderName = it.displayName
|
||||||
|
this.isUniqueDisplayName = RoomMembers(realm, roomId).isUniqueDisplayName(it.displayName)
|
||||||
|
}
|
||||||
|
|
||||||
|
// We try to fallback on prev content if we got a room member state events with null fields
|
||||||
|
if (root?.type == EventType.STATE_ROOM_MEMBER) {
|
||||||
|
ContentMapper.map(senderRoomMemberPrevContent).toModel<RoomMember>()?.also {
|
||||||
|
if (this.senderAvatar == null && it.avatarUrl != null) {
|
||||||
|
this.senderAvatar = it.avatarUrl
|
||||||
|
}
|
||||||
|
if (this.senderName == null && it.displayName != null) {
|
||||||
|
this.senderName = it.displayName
|
||||||
|
this.isUniqueDisplayName = RoomMembers(realm, roomId).isUniqueDisplayName(it.displayName)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val senderRoomMember: RoomMember? = ContentMapper.map(senderRoomMemberContent).toModel()
|
|
||||||
this.senderAvatar = senderRoomMember?.avatarUrl
|
|
||||||
this.senderName = senderRoomMember?.displayName
|
|
||||||
this.isUniqueDisplayName = RoomMembers(realm, roomId).isUniqueDisplayName(senderRoomMember?.displayName)
|
|
||||||
this.senderMembershipEvent = senderMembershipEvent
|
this.senderMembershipEvent = senderMembershipEvent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -118,7 +118,7 @@ internal class LocalEchoEventFactory @Inject constructor(@UserId private val use
|
|||||||
permalink,
|
permalink,
|
||||||
stringProvider.getString(R.string.message_reply_to_prefix),
|
stringProvider.getString(R.string.message_reply_to_prefix),
|
||||||
userLink,
|
userLink,
|
||||||
originalEvent.senderName ?: originalEvent.root.senderId,
|
originalEvent.getDisambiguatedDisplayName(),
|
||||||
body.takeFormatted(),
|
body.takeFormatted(),
|
||||||
createTextContent(newBodyText, newBodyAutoMarkdown).takeFormatted()
|
createTextContent(newBodyText, newBodyAutoMarkdown).takeFormatted()
|
||||||
)
|
)
|
||||||
|
@ -409,7 +409,7 @@ class RoomDetailFragment :
|
|||||||
composerLayout.composerRelatedMessageActionIcon.setImageDrawable(ContextCompat.getDrawable(requireContext(), iconRes))
|
composerLayout.composerRelatedMessageActionIcon.setImageDrawable(ContextCompat.getDrawable(requireContext(), iconRes))
|
||||||
composerLayout.sendButton.setContentDescription(getString(descriptionRes))
|
composerLayout.sendButton.setContentDescription(getString(descriptionRes))
|
||||||
|
|
||||||
avatarRenderer.render(event.senderAvatar, event.root.senderId ?: "", event.senderName, composerLayout.composerRelatedMessageAvatar)
|
avatarRenderer.render(event.senderAvatar, event.root.senderId ?: "", event.getDisambiguatedDisplayName(), composerLayout.composerRelatedMessageAvatar)
|
||||||
composerLayout.expand {
|
composerLayout.expand {
|
||||||
// need to do it here also when not using quick reply
|
// need to do it here also when not using quick reply
|
||||||
focusComposerAndShowKeyboard()
|
focusComposerAndShowKeyboard()
|
||||||
|
@ -27,8 +27,6 @@ import im.vector.riotx.core.resources.StringProvider
|
|||||||
import im.vector.riotx.features.home.AvatarRenderer
|
import im.vector.riotx.features.home.AvatarRenderer
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController
|
import im.vector.riotx.features.home.room.detail.timeline.TimelineEventController
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.helper.AvatarSizeProvider
|
import im.vector.riotx.features.home.room.detail.timeline.helper.AvatarSizeProvider
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.helper.senderAvatar
|
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.helper.senderName
|
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData
|
import im.vector.riotx.features.home.room.detail.timeline.item.MessageInformationData
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.item.NoticeItem
|
import im.vector.riotx.features.home.room.detail.timeline.item.NoticeItem
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.item.NoticeItem_
|
import im.vector.riotx.features.home.room.detail.timeline.item.NoticeItem_
|
||||||
@ -41,13 +39,13 @@ class EncryptionItemFactory @Inject constructor(private val stringProvider: Stri
|
|||||||
fun create(event: TimelineEvent,
|
fun create(event: TimelineEvent,
|
||||||
highlight: Boolean,
|
highlight: Boolean,
|
||||||
callback: TimelineEventController.Callback?): NoticeItem? {
|
callback: TimelineEventController.Callback?): NoticeItem? {
|
||||||
val text = buildNoticeText(event.root, event.senderName) ?: return null
|
val text = buildNoticeText(event.root, event.getDisambiguatedDisplayName()) ?: return null
|
||||||
val informationData = MessageInformationData(
|
val informationData = MessageInformationData(
|
||||||
eventId = event.root.eventId ?: "?",
|
eventId = event.root.eventId ?: "?",
|
||||||
senderId = event.root.senderId ?: "",
|
senderId = event.root.senderId ?: "",
|
||||||
sendState = event.root.sendState,
|
sendState = event.root.sendState,
|
||||||
avatarUrl = event.senderAvatar(),
|
avatarUrl = event.senderAvatar,
|
||||||
memberName = event.senderName(),
|
memberName = event.getDisambiguatedDisplayName(),
|
||||||
showInformation = false
|
showInformation = false
|
||||||
)
|
)
|
||||||
val attributes = NoticeItem.Attributes(
|
val attributes = NoticeItem.Attributes(
|
||||||
|
@ -64,12 +64,12 @@ class MergedHeaderItemFactory @Inject constructor(private val sessionHolder: Act
|
|||||||
if (!showReadMarker && mergedEvent.hasReadMarker && readMarkerVisible) {
|
if (!showReadMarker && mergedEvent.hasReadMarker && readMarkerVisible) {
|
||||||
showReadMarker = true
|
showReadMarker = true
|
||||||
}
|
}
|
||||||
val senderAvatar = mergedEvent.senderAvatar()
|
val senderAvatar = mergedEvent.senderAvatar
|
||||||
val senderName = mergedEvent.senderName()
|
val senderName = mergedEvent.getDisambiguatedDisplayName()
|
||||||
val data = MergedHeaderItem.Data(
|
val data = MergedHeaderItem.Data(
|
||||||
userId = mergedEvent.root.senderId ?: "",
|
userId = mergedEvent.root.senderId ?: "",
|
||||||
avatarUrl = senderAvatar,
|
avatarUrl = senderAvatar,
|
||||||
memberName = senderName ?: "",
|
memberName = senderName,
|
||||||
localId = mergedEvent.localId,
|
localId = mergedEvent.localId,
|
||||||
eventId = mergedEvent.root.eventId ?: ""
|
eventId = mergedEvent.root.eventId ?: ""
|
||||||
)
|
)
|
||||||
|
@ -19,13 +19,17 @@ package im.vector.riotx.features.home.room.detail.timeline.format
|
|||||||
import im.vector.matrix.android.api.session.events.model.Event
|
import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
import im.vector.matrix.android.api.session.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.*
|
import im.vector.matrix.android.api.session.room.model.Membership
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibility
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibilityContent
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomMember
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomNameContent
|
||||||
|
import im.vector.matrix.android.api.session.room.model.RoomTopicContent
|
||||||
import im.vector.matrix.android.api.session.room.model.call.CallInviteContent
|
import im.vector.matrix.android.api.session.room.model.call.CallInviteContent
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.di.ActiveSessionHolder
|
import im.vector.riotx.core.di.ActiveSessionHolder
|
||||||
import im.vector.riotx.core.resources.StringProvider
|
import im.vector.riotx.core.resources.StringProvider
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.helper.senderName
|
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -36,7 +40,7 @@ class NoticeEventFormatter @Inject constructor(private val sessionHolder: Active
|
|||||||
return when (val type = timelineEvent.root.getClearType()) {
|
return when (val type = timelineEvent.root.getClearType()) {
|
||||||
EventType.STATE_ROOM_NAME -> formatRoomNameEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
EventType.STATE_ROOM_NAME -> formatRoomNameEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
||||||
EventType.STATE_ROOM_TOPIC -> formatRoomTopicEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
EventType.STATE_ROOM_TOPIC -> formatRoomTopicEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
||||||
EventType.STATE_ROOM_MEMBER -> formatRoomMemberEvent(timelineEvent.root, timelineEvent.senderName())
|
EventType.STATE_ROOM_MEMBER -> formatRoomMemberEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
||||||
EventType.STATE_HISTORY_VISIBILITY -> formatRoomHistoryVisibilityEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
EventType.STATE_HISTORY_VISIBILITY -> formatRoomHistoryVisibilityEvent(timelineEvent.root, timelineEvent.getDisambiguatedDisplayName())
|
||||||
EventType.STATE_ROOM_TOMBSTONE -> formatRoomTombstoneEvent(timelineEvent.getDisambiguatedDisplayName())
|
EventType.STATE_ROOM_TOMBSTONE -> formatRoomTombstoneEvent(timelineEvent.getDisambiguatedDisplayName())
|
||||||
EventType.CALL_INVITE,
|
EventType.CALL_INVITE,
|
||||||
@ -96,7 +100,8 @@ class NoticeEventFormatter @Inject constructor(private val sessionHolder: Active
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun formatRoomHistoryVisibilityEvent(event: Event, senderName: String?): CharSequence? {
|
private fun formatRoomHistoryVisibilityEvent(event: Event, senderName: String?): CharSequence? {
|
||||||
val historyVisibility = event.getClearContent().toModel<RoomHistoryVisibilityContent>()?.historyVisibility ?: return null
|
val historyVisibility = event.getClearContent().toModel<RoomHistoryVisibilityContent>()?.historyVisibility
|
||||||
|
?: return null
|
||||||
|
|
||||||
val formattedVisibility = when (historyVisibility) {
|
val formattedVisibility = when (historyVisibility) {
|
||||||
RoomHistoryVisibility.SHARED -> stringProvider.getString(R.string.notice_room_visibility_shared)
|
RoomHistoryVisibility.SHARED -> stringProvider.getString(R.string.notice_room_visibility_shared)
|
||||||
@ -135,7 +140,7 @@ class NoticeEventFormatter @Inject constructor(private val sessionHolder: Active
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun buildProfileNotice(event: Event, senderName: String?, eventContent: RoomMember?, prevEventContent: RoomMember?): String? {
|
private fun buildProfileNotice(event: Event, senderName: String?, eventContent: RoomMember?, prevEventContent: RoomMember?): String {
|
||||||
val displayText = StringBuilder()
|
val displayText = StringBuilder()
|
||||||
// Check display name has been changed
|
// Check display name has been changed
|
||||||
if (eventContent?.displayName != prevEventContent?.displayName) {
|
if (eventContent?.displayName != prevEventContent?.displayName) {
|
||||||
@ -160,6 +165,11 @@ class NoticeEventFormatter @Inject constructor(private val sessionHolder: Active
|
|||||||
}
|
}
|
||||||
displayText.append(displayAvatarText)
|
displayText.append(displayAvatarText)
|
||||||
}
|
}
|
||||||
|
if (displayText.isEmpty()) {
|
||||||
|
displayText.append(
|
||||||
|
stringProvider.getString(R.string.notice_member_no_changes, senderName)
|
||||||
|
)
|
||||||
|
}
|
||||||
return displayText.toString()
|
return displayText.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -171,7 +181,8 @@ class NoticeEventFormatter @Inject constructor(private val sessionHolder: Active
|
|||||||
val selfUserId = sessionHolder.getSafeActiveSession()?.myUserId
|
val selfUserId = sessionHolder.getSafeActiveSession()?.myUserId
|
||||||
when {
|
when {
|
||||||
eventContent.thirdPartyInvite != null -> {
|
eventContent.thirdPartyInvite != null -> {
|
||||||
val userWhoHasAccepted = eventContent.thirdPartyInvite?.signed?.mxid ?: event.stateKey
|
val userWhoHasAccepted = eventContent.thirdPartyInvite?.signed?.mxid
|
||||||
|
?: event.stateKey
|
||||||
stringProvider.getString(R.string.notice_room_third_party_registered_invite,
|
stringProvider.getString(R.string.notice_room_third_party_registered_invite,
|
||||||
userWhoHasAccepted, eventContent.thirdPartyInvite?.displayName)
|
userWhoHasAccepted, eventContent.thirdPartyInvite?.displayName)
|
||||||
}
|
}
|
||||||
|
@ -17,8 +17,6 @@
|
|||||||
package im.vector.riotx.features.home.room.detail.timeline.helper
|
package im.vector.riotx.features.home.room.detail.timeline.helper
|
||||||
|
|
||||||
import im.vector.matrix.android.api.session.events.model.EventType
|
import im.vector.matrix.android.api.session.events.model.EventType
|
||||||
import im.vector.matrix.android.api.session.events.model.toModel
|
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomMember
|
|
||||||
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
import im.vector.matrix.android.api.session.room.timeline.TimelineEvent
|
||||||
import im.vector.riotx.core.extensions.localDateTime
|
import im.vector.riotx.core.extensions.localDateTime
|
||||||
|
|
||||||
@ -47,25 +45,6 @@ object TimelineDisplayableEvents {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun TimelineEvent.senderAvatar(): String? {
|
|
||||||
// We might have no avatar when user leave, so we try to get it from prevContent
|
|
||||||
return senderAvatar
|
|
||||||
?: if (root.type == EventType.STATE_ROOM_MEMBER) {
|
|
||||||
root.prevContent.toModel<RoomMember>()?.avatarUrl
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun TimelineEvent.senderName(): String? {
|
|
||||||
// We might have no senderName when user leave, so we try to get it from prevContent
|
|
||||||
return when {
|
|
||||||
senderName != null -> getDisambiguatedDisplayName()
|
|
||||||
root.type == EventType.STATE_ROOM_MEMBER -> root.prevContent.toModel<RoomMember>()?.displayName
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun TimelineEvent.canBeMerged(): Boolean {
|
fun TimelineEvent.canBeMerged(): Boolean {
|
||||||
return root.getClearType() == EventType.STATE_ROOM_MEMBER
|
return root.getClearType() == EventType.STATE_ROOM_MEMBER
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,6 @@ import im.vector.riotx.core.resources.DateProvider
|
|||||||
import im.vector.riotx.core.resources.StringProvider
|
import im.vector.riotx.core.resources.StringProvider
|
||||||
import im.vector.riotx.features.home.AvatarRenderer
|
import im.vector.riotx.features.home.AvatarRenderer
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.format.NoticeEventFormatter
|
import im.vector.riotx.features.home.room.detail.timeline.format.NoticeEventFormatter
|
||||||
import im.vector.riotx.features.home.room.detail.timeline.helper.senderName
|
|
||||||
import me.gujun.android.span.span
|
import me.gujun.android.span.span
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
@ -97,10 +96,10 @@ class RoomSummaryItemFactory @Inject constructor(private val noticeEventFormatte
|
|||||||
&& latestEvent.root.mxDecryptionResult == null) {
|
&& latestEvent.root.mxDecryptionResult == null) {
|
||||||
stringProvider.getString(R.string.encrypted_message)
|
stringProvider.getString(R.string.encrypted_message)
|
||||||
} else if (latestEvent.root.getClearType() == EventType.MESSAGE) {
|
} else if (latestEvent.root.getClearType() == EventType.MESSAGE) {
|
||||||
val senderName = latestEvent.senderName() ?: latestEvent.root.senderId
|
val senderName = latestEvent.getDisambiguatedDisplayName()
|
||||||
val content = latestEvent.root.getClearContent()?.toModel<MessageContent>()
|
val content = latestEvent.root.getClearContent()?.toModel<MessageContent>()
|
||||||
val message = content?.body ?: ""
|
val message = content?.body ?: ""
|
||||||
if (roomSummary.isDirect.not() && senderName != null) {
|
if (roomSummary.isDirect.not()) {
|
||||||
span {
|
span {
|
||||||
text = senderName
|
text = senderName
|
||||||
textColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_primary)
|
textColor = colorProvider.getColorFromAttribute(R.attr.riotx_text_primary)
|
||||||
|
@ -94,7 +94,7 @@ class NotifiableEventResolver @Inject constructor(private val stringProvider: St
|
|||||||
event.getLastMessageBody()
|
event.getLastMessageBody()
|
||||||
?: stringProvider.getString(R.string.notification_unknown_new_event)
|
?: stringProvider.getString(R.string.notification_unknown_new_event)
|
||||||
val roomName = stringProvider.getString(R.string.notification_unknown_room_name)
|
val roomName = stringProvider.getString(R.string.notification_unknown_room_name)
|
||||||
val senderDisplayName = event.senderName ?: event.root.senderId
|
val senderDisplayName = event.getDisambiguatedDisplayName()
|
||||||
|
|
||||||
val notifiableEvent = NotifiableMessageEvent(
|
val notifiableEvent = NotifiableMessageEvent(
|
||||||
eventId = event.root.eventId!!,
|
eventId = event.root.eventId!!,
|
||||||
@ -128,7 +128,7 @@ class NotifiableEventResolver @Inject constructor(private val stringProvider: St
|
|||||||
val body = event.getLastMessageBody()
|
val body = event.getLastMessageBody()
|
||||||
?: stringProvider.getString(R.string.notification_unknown_new_event)
|
?: stringProvider.getString(R.string.notification_unknown_new_event)
|
||||||
val roomName = room.roomSummary()?.displayName ?: ""
|
val roomName = room.roomSummary()?.displayName ?: ""
|
||||||
val senderDisplayName = event.senderName ?: event.root.senderId
|
val senderDisplayName = event.getDisambiguatedDisplayName()
|
||||||
|
|
||||||
val notifiableEvent = NotifiableMessageEvent(
|
val notifiableEvent = NotifiableMessageEvent(
|
||||||
eventId = event.root.eventId!!,
|
eventId = event.root.eventId!!,
|
||||||
|
@ -2,6 +2,6 @@
|
|||||||
<resources>
|
<resources>
|
||||||
|
|
||||||
<!-- Strings not defined in Riot -->
|
<!-- Strings not defined in Riot -->
|
||||||
|
<string name="notice_member_no_changes">"%1$s made no changes"</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user