change (report room) : use client.isReportRoomApiSupported instead of hardcoded value

This commit is contained in:
ganfra
2025-05-13 16:20:37 +02:00
parent 3cf8b04a07
commit 405cd8e82d
7 changed files with 25 additions and 9 deletions

View File

@@ -10,7 +10,4 @@ package io.element.android.appconfig
object MatrixConfiguration {
const val MATRIX_TO_PERMALINK_BASE_URL: String = "https://matrix.to/#/"
val clientPermalinkBaseUrl: String? = null
// TODO remove this when report is fixed
const val CAN_REPORT_ROOM = false
}

View File

@@ -23,7 +23,6 @@ import androidx.compose.runtime.setValue
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject
import im.vector.app.features.analytics.plan.JoinedRoom
import io.element.android.appconfig.MatrixConfiguration
import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteState
@@ -100,6 +99,8 @@ class JoinRoomPresenter @AssistedInject constructor(
val hideInviteAvatars by remember {
appPreferencesStore.getHideInviteAvatarsFlow()
}.collectAsState(initial = false)
val canReportRoom by produceState(false) { value = matrixClient.canReportRoom() }
val contentState by produceState<ContentState>(
initialValue = ContentState.Loading,
key1 = roomInfo,
@@ -212,7 +213,7 @@ class JoinRoomPresenter @AssistedInject constructor(
applicationName = buildMeta.applicationName,
knockMessage = knockMessage,
hideInviteAvatars = hideInviteAvatars,
canReportRoom = MatrixConfiguration.CAN_REPORT_ROOM,
canReportRoom = canReportRoom,
eventSink = ::handleEvents
)
}

View File

@@ -17,7 +17,6 @@ import androidx.compose.runtime.produceState
import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.appconfig.MatrixConfiguration
import io.element.android.features.leaveroom.api.LeaveRoomEvent
import io.element.android.features.leaveroom.api.LeaveRoomState
import io.element.android.features.messages.api.pinned.IsPinnedMessagesFeatureEnabled
@@ -180,6 +179,8 @@ class RoomDetailsPresenter @Inject constructor(
.launchIn(this)
}
val canReportRoom by produceState(false) { value = client.canReportRoom() }
return RoomDetailsState(
roomId = room.roomId,
roomName = roomName,
@@ -208,7 +209,7 @@ class RoomDetailsPresenter @Inject constructor(
knockRequestsCount = knockRequestsCount,
canShowSecurityAndPrivacy = canShowSecurityAndPrivacy,
hasMemberVerificationViolations = hasMemberVerificationViolations,
canReportRoom = MatrixConfiguration.CAN_REPORT_ROOM,
canReportRoom = canReportRoom,
eventSink = ::handleEvents,
)
}

View File

@@ -23,7 +23,6 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow
import im.vector.app.features.analytics.plan.Interaction
import io.element.android.appconfig.MatrixConfiguration
import io.element.android.features.invite.api.SeenInvitesStore
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.AcceptInvite
import io.element.android.features.invite.api.acceptdecline.AcceptDeclineInviteEvents.DeclineInvite
@@ -165,6 +164,8 @@ class RoomListPresenter @Inject constructor(
val contentState = roomListContentState(securityBannerDismissed)
val canReportRoom by produceState(false) { value = client.canReportRoom() }
return RoomListState(
matrixUser = matrixUser.value,
showAvatarIndicator = showAvatarIndicator,
@@ -180,7 +181,7 @@ class RoomListPresenter @Inject constructor(
acceptDeclineInviteState = acceptDeclineInviteState,
directLogoutState = directLogoutState,
hideInvitesAvatars = hideInvitesAvatar,
canReportRoom = MatrixConfiguration.CAN_REPORT_ROOM,
canReportRoom = canReportRoom,
eventSink = ::handleEvents,
)
}

View File

@@ -162,6 +162,11 @@ interface MatrixClient {
fun canDeactivateAccount(): Boolean
suspend fun deactivateAccount(password: String, eraseData: Boolean): Result<Unit>
/**
* Check if the user can report a room.
*/
suspend fun canReportRoom(): Boolean
}
/**

View File

@@ -666,6 +666,12 @@ class RustMatrixClient(
}
}
override suspend fun canReportRoom(): Boolean = withContext(sessionDispatcher) {
runCatching {
innerClient.isReportRoomApiSupported()
}.getOrDefault(false)
}
private suspend fun File.getCacheSize(
includeCryptoDb: Boolean = false,
): Long = withContext(sessionDispatcher) {

View File

@@ -88,6 +88,7 @@ class FakeMatrixClient(
private val availableSlidingSyncVersionsLambda: () -> Result<List<SlidingSyncVersion>> = { lambdaError() },
private val ignoreUserResult: (UserId) -> Result<Unit> = { lambdaError() },
private var unIgnoreUserResult: (UserId) -> Result<Unit> = { Result.success(Unit) },
private val canReportRoomLambda: () -> Boolean = { false },
override val ignoredUsersFlow: StateFlow<ImmutableList<UserId>> = MutableStateFlow(persistentListOf()),
) : MatrixClient {
var setDisplayNameCalled: Boolean = false
@@ -329,4 +330,8 @@ class FakeMatrixClient(
override suspend fun availableSlidingSyncVersions(): Result<List<SlidingSyncVersion>> {
return availableSlidingSyncVersionsLambda()
}
override suspend fun canReportRoom(): Boolean {
return canReportRoomLambda()
}
}