Hide unwanted events from local room timeline
This commit is contained in:
parent
b144bac578
commit
a46d7ed8dd
@ -69,6 +69,7 @@ import org.matrix.android.sdk.api.session.room.model.Membership
|
||||
import org.matrix.android.sdk.api.session.room.model.ReadReceipt
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberContent
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomSummary
|
||||
import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageAudioContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageImageInfoContent
|
||||
import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent
|
||||
@ -603,12 +604,14 @@ class TimelineEventController @Inject constructor(
|
||||
}
|
||||
|
||||
private fun wantsDateSeparator(event: TimelineEvent, nextEvent: TimelineEvent?): Boolean {
|
||||
return if (hasReachedInvite && hasUTD) {
|
||||
true
|
||||
} else {
|
||||
val date = event.root.localDateTime()
|
||||
val nextDate = nextEvent?.root?.localDateTime()
|
||||
date.toLocalDate() != nextDate?.toLocalDate()
|
||||
return when {
|
||||
RoomLocalEcho.isLocalEchoId(partialState.roomSummary?.roomId.orEmpty()) -> false
|
||||
hasReachedInvite && hasUTD -> true
|
||||
else -> {
|
||||
val date = event.root.localDateTime()
|
||||
val nextDate = nextEvent?.root?.localDateTime()
|
||||
date.toLocalDate() != nextDate?.toLocalDate()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -26,6 +26,7 @@ import org.matrix.android.sdk.api.session.events.model.isThread
|
||||
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberContent
|
||||
import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho
|
||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
||||
import javax.inject.Inject
|
||||
|
||||
@ -176,6 +177,13 @@ class TimelineEventVisibilityHelper @Inject constructor(private val userPreferen
|
||||
return true
|
||||
}
|
||||
|
||||
// Hide fake events for local rooms
|
||||
if (RoomLocalEcho.isLocalEchoId(roomId) &&
|
||||
root.getClearType() == EventType.STATE_ROOM_MEMBER ||
|
||||
root.getClearType() == EventType.STATE_ROOM_HISTORY_VISIBILITY) {
|
||||
return true
|
||||
}
|
||||
|
||||
// Allow only the the threads within the rootThreadEventId along with the root event
|
||||
if (userPreferencesProvider.areThreadMessagesEnabled() && isFromThreadTimeline) {
|
||||
return if (root.getRootThreadEventId() == rootThreadEventId) {
|
||||
|
@ -58,7 +58,12 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
||||
super.bind(holder)
|
||||
|
||||
bindCreationSummaryTile(holder)
|
||||
bindMergedViews(holder)
|
||||
}
|
||||
|
||||
private fun bindMergedViews(holder: Holder) {
|
||||
val isLocalRoom = RoomLocalEcho.isLocalEchoId(attributes.roomSummary?.roomId.orEmpty())
|
||||
holder.mergedView.isVisible = !isLocalRoom
|
||||
if (attributes.isCollapsed) {
|
||||
// Take the oldest data
|
||||
val data = distinctMergeData.lastOrNull()
|
||||
@ -222,6 +227,7 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
||||
}
|
||||
|
||||
class Holder : BasedMergedItem.Holder(STUB_ID) {
|
||||
val mergedView by bind<View>(R.id.mergedSumContainer)
|
||||
val summaryView by bind<TextView>(R.id.itemNoticeTextView)
|
||||
val avatarView by bind<ImageView>(R.id.itemNoticeAvatarView)
|
||||
val encryptionTile by bind<ViewGroup>(R.id.creationEncryptionTile)
|
||||
|
Loading…
x
Reference in New Issue
Block a user