change (member moderation) : extract in a separate module

This commit is contained in:
ganfra 2025-05-06 22:39:18 +02:00
parent 7ba0d75b5c
commit 5272587897
80 changed files with 1062 additions and 633 deletions

View file

@ -0,0 +1,21 @@
/*
* Copyright 2025 New Vector Ltd.
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
* Please see LICENSE files in the repository root for full details.
*/
plugins {
id("io.element.android-compose-library")
}
android {
namespace = "io.element.android.features.roommembermoderation.api"
}
dependencies {
implementation(projects.libraries.architecture)
implementation(projects.libraries.designsystem)
implementation(projects.libraries.uiStrings)
implementation(projects.libraries.matrix.api)
}

View file

@ -0,0 +1,15 @@
/*
* Copyright 2024 New Vector 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.roommembermoderation.api
import io.element.android.libraries.matrix.api.room.RoomMember
interface RoomMemberModerationEvents {
data class RenderActions(val roomMember: RoomMember) : RoomMemberModerationEvents
data class ProcessAction(val action: ModerationAction): RoomMemberModerationEvents
}

View file

@ -0,0 +1,20 @@
/*
* Copyright 2025 New Vector 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.roommembermoderation.api
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
interface RoomMemberModerationRenderer {
@Composable
fun Render(
state: RoomMemberModerationState,
onSelectAction: (ModerationAction) -> Unit,
modifier: Modifier,
)
}

View file

@ -0,0 +1,23 @@
/*
* Copyright 2024 New Vector 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.roommembermoderation.api
import io.element.android.libraries.matrix.api.room.RoomMember
interface RoomMemberModerationState {
val canKick: Boolean
val canBan: Boolean
val eventSink: (RoomMemberModerationEvents) -> Unit
}
sealed interface ModerationAction {
data class DisplayProfile(val member: RoomMember) : ModerationAction
data class KickUser(val member: RoomMember) : ModerationAction
data class BanUser(val member: RoomMember) : ModerationAction
data class UnbanUser(val member: RoomMember) : ModerationAction
}