-
Notifications
You must be signed in to change notification settings - Fork 232
Feature : Report room #4654
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature : Report room #4654
Changes from 28 commits
ba54875
10d765d
6abc8e0
2c4213f
f064a94
cc027ff
53b73c0
a551508
f6c99fc
49b9f54
ee43330
cc34409
05d9a4c
cd6c81e
a611f01
64a3c96
5538858
4b80f3d
ac6ddb4
04b4aef
dc1e590
ceb9772
4154748
1b026c8
d355dff
2630797
4a89653
0e5ecbf
589b5be
34420af
2161474
9acf1e1
ab05c8b
6ca22ef
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/* | ||
* 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.invite.api | ||
|
||
import android.os.Parcelable | ||
import io.element.android.libraries.matrix.api.core.RoomId | ||
import io.element.android.libraries.matrix.api.room.RoomInfo | ||
import io.element.android.libraries.matrix.api.room.isDm | ||
import io.element.android.libraries.matrix.api.room.preview.RoomPreviewInfo | ||
import kotlinx.parcelize.Parcelize | ||
|
||
@Parcelize | ||
Check warning on line 17 in features/invite/api/src/main/kotlin/io/element/android/features/invite/api/InviteData.kt
|
||
data class InviteData( | ||
val roomId: RoomId, | ||
val roomName: String, | ||
val isDm: Boolean, | ||
) : Parcelable | ||
Check warning on line 22 in features/invite/api/src/main/kotlin/io/element/android/features/invite/api/InviteData.kt
|
||
|
||
fun RoomPreviewInfo.toInviteData(): InviteData { | ||
return InviteData( | ||
roomId = roomId, | ||
Check warning on line 26 in features/invite/api/src/main/kotlin/io/element/android/features/invite/api/InviteData.kt
|
||
roomName = name ?: roomId.value, | ||
isDm = false, | ||
Check warning on line 28 in features/invite/api/src/main/kotlin/io/element/android/features/invite/api/InviteData.kt
|
||
) | ||
} | ||
|
||
fun RoomInfo.toInviteData(): InviteData { | ||
return InviteData( | ||
roomId = id, | ||
roomName = name ?: id.value, | ||
isDm = isDm, | ||
) | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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.invite.api.acceptdecline | ||
|
||
import io.element.android.features.invite.api.InviteData | ||
|
||
interface AcceptDeclineInviteEvents { | ||
data class AcceptInvite(val invite: InviteData) : AcceptDeclineInviteEvents | ||
data class DeclineInvite(val invite: InviteData, val blockUser: Boolean, val shouldConfirm: Boolean) : AcceptDeclineInviteEvents | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
/* | ||
* 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.invite.api.declineandblock | ||
|
||
import com.bumble.appyx.core.modality.BuildContext | ||
import com.bumble.appyx.core.node.Node | ||
import io.element.android.features.invite.api.InviteData | ||
import io.element.android.libraries.architecture.FeatureEntryPoint | ||
|
||
interface DeclineInviteAndBlockEntryPoint : FeatureEntryPoint { | ||
fun createNode(parentNode: Node, buildContext: BuildContext, inviteData: InviteData): Node | ||
} |
This file was deleted.
This file was deleted.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
/* | ||
* 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.invite.impl | ||
|
||
import com.squareup.anvil.annotations.ContributesBinding | ||
import im.vector.app.features.analytics.plan.JoinedRoom | ||
import io.element.android.features.invite.api.SeenInvitesStore | ||
import io.element.android.libraries.di.SessionScope | ||
import io.element.android.libraries.matrix.api.MatrixClient | ||
import io.element.android.libraries.matrix.api.core.RoomId | ||
import io.element.android.libraries.matrix.api.core.toRoomIdOrAlias | ||
import io.element.android.libraries.matrix.api.room.join.JoinRoom | ||
import io.element.android.libraries.push.api.notifications.NotificationCleaner | ||
import javax.inject.Inject | ||
|
||
interface AcceptInvite { | ||
suspend operator fun invoke(roomId: RoomId): Result<RoomId> | ||
} | ||
|
||
@ContributesBinding(SessionScope::class) | ||
class DefaultAcceptInvite @Inject constructor( | ||
private val client: MatrixClient, | ||
private val joinRoom: JoinRoom, | ||
private val notificationCleaner: NotificationCleaner, | ||
private val seenInvitesStore: SeenInvitesStore, | ||
) : AcceptInvite { | ||
override suspend fun invoke(roomId: RoomId): Result<RoomId> { | ||
return joinRoom( | ||
roomIdOrAlias = roomId.toRoomIdOrAlias(), | ||
serverNames = emptyList(), | ||
trigger = JoinedRoom.Trigger.Invite, | ||
).onSuccess { | ||
notificationCleaner.clearMembershipNotificationForRoom(client.sessionId, roomId) | ||
seenInvitesStore.markAsUnSeen(roomId) | ||
}.map { roomId } | ||
} | ||
} |
Uh oh!
There was an error while loading. Please reload this page.