Move Event exclusion to the module appconfig.

It has to become an android module to be able to add a dependency on : libraries:matrix:api.
This commit is contained in:
Benoit Marty 2024-04-02 14:35:58 +02:00
parent db3f17fd7d
commit e296fe2877
3 changed files with 37 additions and 25 deletions

View file

@ -14,16 +14,13 @@
* limitations under the License. * limitations under the License.
*/ */
plugins { plugins {
id("java-library") id("io.element.android-library")
id("com.android.lint")
alias(libs.plugins.kotlin.jvm)
alias(libs.plugins.anvil) alias(libs.plugins.anvil)
alias(libs.plugins.ksp) alias(libs.plugins.ksp)
} }
java { android {
sourceCompatibility = JavaVersion.VERSION_17 namespace = "io.element.android.appconfig"
targetCompatibility = JavaVersion.VERSION_17
} }
anvil { anvil {
@ -33,4 +30,5 @@ anvil {
dependencies { dependencies {
implementation(libs.dagger) implementation(libs.dagger)
implementation(projects.libraries.di) implementation(projects.libraries.di)
implementation(projects.libraries.matrix.api)
} }

View file

@ -16,6 +16,28 @@
package io.element.android.appconfig package io.element.android.appconfig
import io.element.android.libraries.matrix.api.room.StateEventType
object TimelineConfig { object TimelineConfig {
const val MAX_READ_RECEIPT_TO_DISPLAY = 3 const val MAX_READ_RECEIPT_TO_DISPLAY = 3
/**
* Event types that will be filtered out from the timeline (i.e. not displayed).
*/
val excludedEvents = listOf(
StateEventType.ROOM_ALIASES,
StateEventType.ROOM_CANONICAL_ALIAS,
StateEventType.ROOM_GUEST_ACCESS,
StateEventType.ROOM_HISTORY_VISIBILITY,
StateEventType.ROOM_JOIN_RULES,
StateEventType.ROOM_PINNED_EVENTS,
StateEventType.ROOM_POWER_LEVELS,
StateEventType.ROOM_SERVER_ACL,
StateEventType.ROOM_TOMBSTONE,
StateEventType.SPACE_CHILD,
StateEventType.SPACE_PARENT,
StateEventType.POLICY_RULE_ROOM,
StateEventType.POLICY_RULE_SERVER,
StateEventType.POLICY_RULE_USER,
)
} }

View file

@ -16,6 +16,7 @@
package io.element.android.libraries.matrix.impl package io.element.android.libraries.matrix.impl
import io.element.android.appconfig.TimelineConfig
import io.element.android.libraries.androidutils.file.getSizeOfFiles import io.element.android.libraries.androidutils.file.getSizeOfFiles
import io.element.android.libraries.androidutils.file.safeDelete import io.element.android.libraries.androidutils.file.safeDelete
import io.element.android.libraries.core.coroutine.CoroutineDispatchers import io.element.android.libraries.core.coroutine.CoroutineDispatchers
@ -54,6 +55,7 @@ import io.element.android.libraries.matrix.impl.room.MatrixRoomInfoMapper
import io.element.android.libraries.matrix.impl.room.RoomContentForwarder import io.element.android.libraries.matrix.impl.room.RoomContentForwarder
import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber import io.element.android.libraries.matrix.impl.room.RoomSyncSubscriber
import io.element.android.libraries.matrix.impl.room.RustMatrixRoom import io.element.android.libraries.matrix.impl.room.RustMatrixRoom
import io.element.android.libraries.matrix.impl.room.map
import io.element.android.libraries.matrix.impl.roomdirectory.RustRoomDirectoryService import io.element.android.libraries.matrix.impl.roomdirectory.RustRoomDirectoryService
import io.element.android.libraries.matrix.impl.roomlist.RoomListFactory import io.element.android.libraries.matrix.impl.roomlist.RoomListFactory
import io.element.android.libraries.matrix.impl.roomlist.RustRoomListService import io.element.android.libraries.matrix.impl.roomlist.RustRoomListService
@ -97,7 +99,6 @@ import org.matrix.rustcomponents.sdk.NotificationProcessSetup
import org.matrix.rustcomponents.sdk.PowerLevels import org.matrix.rustcomponents.sdk.PowerLevels
import org.matrix.rustcomponents.sdk.Room import org.matrix.rustcomponents.sdk.Room
import org.matrix.rustcomponents.sdk.RoomListItem import org.matrix.rustcomponents.sdk.RoomListItem
import org.matrix.rustcomponents.sdk.StateEventType
import org.matrix.rustcomponents.sdk.TaskHandle import org.matrix.rustcomponents.sdk.TaskHandle
import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter import org.matrix.rustcomponents.sdk.TimelineEventTypeFilter
import org.matrix.rustcomponents.sdk.use import org.matrix.rustcomponents.sdk.use
@ -229,24 +230,15 @@ class RustMatrixClient(
), ),
) )
private val eventFilters = TimelineEventTypeFilter.exclude( private val eventFilters = TimelineConfig.excludedEvents
listOf( .takeIf { it.isNotEmpty() }
StateEventType.ROOM_ALIASES, ?.let { listStateEventType ->
StateEventType.ROOM_CANONICAL_ALIAS, TimelineEventTypeFilter.exclude(
StateEventType.ROOM_GUEST_ACCESS, listStateEventType.map { stateEventType ->
StateEventType.ROOM_HISTORY_VISIBILITY, FilterTimelineEventType.State(stateEventType.map())
StateEventType.ROOM_JOIN_RULES, }
StateEventType.ROOM_PINNED_EVENTS, )
StateEventType.ROOM_POWER_LEVELS, }
StateEventType.ROOM_SERVER_ACL,
StateEventType.ROOM_TOMBSTONE,
StateEventType.SPACE_CHILD,
StateEventType.SPACE_PARENT,
StateEventType.POLICY_RULE_ROOM,
StateEventType.POLICY_RULE_SERVER,
StateEventType.POLICY_RULE_USER,
).map(FilterTimelineEventType::State)
)
override val mediaLoader: MatrixMediaLoader = RustMediaLoader( override val mediaLoader: MatrixMediaLoader = RustMediaLoader(
baseCacheDirectory = baseCacheDirectory, baseCacheDirectory = baseCacheDirectory,