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.ReadReceipt
|
||||||
import org.matrix.android.sdk.api.session.room.model.RoomMemberContent
|
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.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.MessageAudioContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageImageInfoContent
|
import org.matrix.android.sdk.api.session.room.model.message.MessageImageInfoContent
|
||||||
import org.matrix.android.sdk.api.session.room.model.message.MessageVideoContent
|
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 {
|
private fun wantsDateSeparator(event: TimelineEvent, nextEvent: TimelineEvent?): Boolean {
|
||||||
return if (hasReachedInvite && hasUTD) {
|
return when {
|
||||||
true
|
RoomLocalEcho.isLocalEchoId(partialState.roomSummary?.roomId.orEmpty()) -> false
|
||||||
} else {
|
hasReachedInvite && hasUTD -> true
|
||||||
val date = event.root.localDateTime()
|
else -> {
|
||||||
val nextDate = nextEvent?.root?.localDateTime()
|
val date = event.root.localDateTime()
|
||||||
date.toLocalDate() != nextDate?.toLocalDate()
|
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.events.model.toModel
|
||||||
import org.matrix.android.sdk.api.session.room.model.Membership
|
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.RoomMemberContent
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.localecho.RoomLocalEcho
|
||||||
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
import org.matrix.android.sdk.api.session.room.timeline.TimelineEvent
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
|
@ -176,6 +177,13 @@ class TimelineEventVisibilityHelper @Inject constructor(private val userPreferen
|
||||||
return true
|
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
|
// Allow only the the threads within the rootThreadEventId along with the root event
|
||||||
if (userPreferencesProvider.areThreadMessagesEnabled() && isFromThreadTimeline) {
|
if (userPreferencesProvider.areThreadMessagesEnabled() && isFromThreadTimeline) {
|
||||||
return if (root.getRootThreadEventId() == rootThreadEventId) {
|
return if (root.getRootThreadEventId() == rootThreadEventId) {
|
||||||
|
|
|
@ -58,7 +58,12 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
||||||
super.bind(holder)
|
super.bind(holder)
|
||||||
|
|
||||||
bindCreationSummaryTile(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) {
|
if (attributes.isCollapsed) {
|
||||||
// Take the oldest data
|
// Take the oldest data
|
||||||
val data = distinctMergeData.lastOrNull()
|
val data = distinctMergeData.lastOrNull()
|
||||||
|
@ -222,6 +227,7 @@ abstract class MergedRoomCreationItem : BasedMergedItem<MergedRoomCreationItem.H
|
||||||
}
|
}
|
||||||
|
|
||||||
class Holder : BasedMergedItem.Holder(STUB_ID) {
|
class Holder : BasedMergedItem.Holder(STUB_ID) {
|
||||||
|
val mergedView by bind<View>(R.id.mergedSumContainer)
|
||||||
val summaryView by bind<TextView>(R.id.itemNoticeTextView)
|
val summaryView by bind<TextView>(R.id.itemNoticeTextView)
|
||||||
val avatarView by bind<ImageView>(R.id.itemNoticeAvatarView)
|
val avatarView by bind<ImageView>(R.id.itemNoticeAvatarView)
|
||||||
val encryptionTile by bind<ViewGroup>(R.id.creationEncryptionTile)
|
val encryptionTile by bind<ViewGroup>(R.id.creationEncryptionTile)
|
||||||
|
|
Loading…
Reference in New Issue