From a9a0c252b963d4e2fe9a85ed6ce46227fc5a98e4 Mon Sep 17 00:00:00 2001 From: ganfra Date: Mon, 2 Feb 2026 11:22:11 +0100 Subject: [PATCH] Create base classes for SpaceFilters feature --- .../impl/spacefilters/SpaceFiltersEvent.kt | 10 +++++++ .../spacefilters/SpaceFiltersPresenter.kt | 22 +++++++++++++++ .../impl/spacefilters/SpaceFiltersState.kt | 12 ++++++++ .../spacefilters/SpaceFiltersStateProvider.kt | 21 ++++++++++++++ .../impl/spacefilters/SpaceFiltersView.kt | 28 +++++++++++++++++++ 5 files changed, 93 insertions(+) create mode 100644 features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersEvent.kt create mode 100644 features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersPresenter.kt create mode 100644 features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt create mode 100644 features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersStateProvider.kt create mode 100644 features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersView.kt diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersEvent.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersEvent.kt new file mode 100644 index 0000000000..2db514b68d --- /dev/null +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersEvent.kt @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.home.impl.spacefilters + +sealed interface SpaceFiltersEvent diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersPresenter.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersPresenter.kt new file mode 100644 index 0000000000..21ed0c1070 --- /dev/null +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersPresenter.kt @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.home.impl.spacefilters + +import androidx.compose.runtime.Composable +import dev.zacsweers.metro.Inject +import io.element.android.libraries.architecture.Presenter + +@Inject +class SpaceFiltersPresenter : Presenter { + @Composable + override fun present(): SpaceFiltersState { + return SpaceFiltersState( + eventSink = {}, + ) + } +} diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt new file mode 100644 index 0000000000..af56cfdba1 --- /dev/null +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersState.kt @@ -0,0 +1,12 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.home.impl.spacefilters + +data class SpaceFiltersState( + val eventSink: (SpaceFiltersEvent) -> Unit, +) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersStateProvider.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersStateProvider.kt new file mode 100644 index 0000000000..b999228969 --- /dev/null +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersStateProvider.kt @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.home.impl.spacefilters + +import androidx.compose.ui.tooling.preview.PreviewParameterProvider + +class SpaceFiltersStateProvider : PreviewParameterProvider { + override val values: Sequence + get() = sequenceOf(aSpaceFiltersState()) +} + +fun aSpaceFiltersState( + eventSink: (SpaceFiltersEvent) -> Unit = {}, +) = SpaceFiltersState( + eventSink = eventSink, +) diff --git a/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersView.kt b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersView.kt new file mode 100644 index 0000000000..a9250a74e2 --- /dev/null +++ b/features/home/impl/src/main/kotlin/io/element/android/features/home/impl/spacefilters/SpaceFiltersView.kt @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2026 Element Creations Ltd. + * + * SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial. + * Please see LICENSE files in the repository root for full details. + */ + +package io.element.android.features.home.impl.spacefilters + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.PreviewParameter +import io.element.android.libraries.designsystem.preview.ElementPreview +import io.element.android.libraries.designsystem.preview.PreviewsDayNight + +@Composable +fun SpaceFiltersView( + state: SpaceFiltersState, + modifier: Modifier = Modifier +) { + // TODO +} + +@PreviewsDayNight +@Composable +internal fun SpaceFiltersViewPreview(@PreviewParameter(SpaceFiltersStateProvider::class) state: SpaceFiltersState) = ElementPreview { + SpaceFiltersView(state = state) +}