Code review fixes.
This commit is contained in:
parent
752bde413d
commit
60aaa2a39c
@ -784,19 +784,20 @@ internal class DefaultTimeline(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun List<TimelineEvent>.filterEventsWithSettings(): List<TimelineEvent> {
|
private fun List<TimelineEvent>.filterEventsWithSettings(): List<TimelineEvent> {
|
||||||
return filter {
|
return filter { event ->
|
||||||
val filterType = !settings.filters.filterTypes || settings.filters.allowedTypes.map { it.eventType }.contains(it.root.type)
|
val filterType = !settings.filters.filterTypes
|
||||||
|
|| settings.filters.allowedTypes.any { it.eventType == event.root.type && (it.stateKey == null || it.stateKey == event.root.senderId) }
|
||||||
if (!filterType) return@filter false
|
if (!filterType) return@filter false
|
||||||
|
|
||||||
val filterEdits = if (settings.filters.filterEdits && it.root.getClearType() == EventType.MESSAGE) {
|
val filterEdits = if (settings.filters.filterEdits && event.root.getClearType() == EventType.MESSAGE) {
|
||||||
val messageContent = it.root.getClearContent().toModel<MessageContent>()
|
val messageContent = event.root.getClearContent().toModel<MessageContent>()
|
||||||
messageContent?.relatesTo?.type != RelationType.REPLACE && messageContent?.relatesTo?.type != RelationType.RESPONSE
|
messageContent?.relatesTo?.type != RelationType.REPLACE && messageContent?.relatesTo?.type != RelationType.RESPONSE
|
||||||
} else {
|
} else {
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
if (!filterEdits) return@filter false
|
if (!filterEdits) return@filter false
|
||||||
|
|
||||||
val filterRedacted = settings.filters.filterRedacted && it.root.isRedacted()
|
val filterRedacted = settings.filters.filterRedacted && event.root.isRedacted()
|
||||||
!filterRedacted
|
!filterRedacted
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -151,8 +151,25 @@ internal class TimelineHiddenReadReceipts constructor(private val readReceiptsSu
|
|||||||
beginGroup()
|
beginGroup()
|
||||||
var needOr = false
|
var needOr = false
|
||||||
if (settings.filters.filterTypes) {
|
if (settings.filters.filterTypes) {
|
||||||
val allowedTypes = settings.filters.allowedTypes.map { it.eventType }.toTypedArray()
|
beginGroup()
|
||||||
not().`in`("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.TYPE}", allowedTypes)
|
// Events: A, B, C, D, (E and S1), F, G, (H and S1), I
|
||||||
|
// Allowed: A, B, C, (E and S1), G, (H and S2)
|
||||||
|
// Result: D, F, H, I
|
||||||
|
settings.filters.allowedTypes.forEachIndexed { index, filter ->
|
||||||
|
if (filter.stateKey == null) {
|
||||||
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.TYPE}", filter.eventType)
|
||||||
|
} else {
|
||||||
|
beginGroup()
|
||||||
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.TYPE}", filter.eventType)
|
||||||
|
or()
|
||||||
|
notEqualTo("${ReadReceiptsSummaryEntityFields.TIMELINE_EVENT}.${TimelineEventEntityFields.ROOT.STATE_KEY}", filter.stateKey)
|
||||||
|
endGroup()
|
||||||
|
}
|
||||||
|
if (index != settings.filters.allowedTypes.size - 1) {
|
||||||
|
and()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
endGroup()
|
||||||
needOr = true
|
needOr = true
|
||||||
}
|
}
|
||||||
if (settings.filters.filterUseless) {
|
if (settings.filters.filterUseless) {
|
||||||
|
@ -40,7 +40,7 @@ class TimelineSettingsFactory @Inject constructor(
|
|||||||
filterTypes = false),
|
filterTypes = false),
|
||||||
buildReadReceipts = userPreferencesProvider.shouldShowReadReceipts())
|
buildReadReceipts = userPreferencesProvider.shouldShowReadReceipts())
|
||||||
} else {
|
} else {
|
||||||
val allowedTypes = TimelineDisplayableEvents.DISPLAYABLE_TYPES.filterDisplayableTypes()
|
val allowedTypes = TimelineDisplayableEvents.DISPLAYABLE_TYPES.createAllowedEventTypeFilters()
|
||||||
TimelineSettings(
|
TimelineSettings(
|
||||||
initialSize = 30,
|
initialSize = 30,
|
||||||
filters = TimelineEventFilters(
|
filters = TimelineEventFilters(
|
||||||
@ -53,7 +53,7 @@ class TimelineSettingsFactory @Inject constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun List<String>.filterDisplayableTypes(): List<EventTypeFilter> {
|
private fun List<String>.createAllowedEventTypeFilters(): List<EventTypeFilter> {
|
||||||
return map {
|
return map {
|
||||||
EventTypeFilter(
|
EventTypeFilter(
|
||||||
eventType = it,
|
eventType = it,
|
||||||
|
Loading…
Reference in New Issue
Block a user