mirror of
https://github.com/vector-im/element-android.git
synced 2024-11-26 15:18:19 +08:00
Merge pull request #8798 from element-hq/feature/bma/reportUserStateEvent
When reporting a user, use the membership state eventId for the eventId.
This commit is contained in:
commit
9b4394bbe6
@ -766,7 +766,7 @@ class TimelineViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
fun getRoom(roomId: String): RoomSummary? =
|
||||
session.roomService().getRoomSummary(roomId)
|
||||
session.roomService().getRoomSummary(roomId)
|
||||
|
||||
private fun handleComposerFocusChange(action: RoomDetailAction.ComposerFocusChange) {
|
||||
if (room == null) return
|
||||
@ -1147,7 +1147,22 @@ class TimelineViewModel @AssistedInject constructor(
|
||||
if (room == null) return
|
||||
viewModelScope.launch {
|
||||
val event = try {
|
||||
room.reportingService().reportContent(action.eventId, -100, action.reason)
|
||||
if (action.user && action.senderId != null) {
|
||||
// When reporting a user, use the user state event if available (it should always be available)
|
||||
val userStateEventId = room.stateService()
|
||||
.getStateEvent(EventType.STATE_ROOM_MEMBER, QueryStringValue.Equals(action.senderId))
|
||||
?.eventId
|
||||
// If not found fallback to the provided event
|
||||
val eventId = userStateEventId ?: action.eventId
|
||||
room.reportingService()
|
||||
.reportContent(
|
||||
eventId = eventId,
|
||||
score = -100,
|
||||
reason = action.reason
|
||||
)
|
||||
} else {
|
||||
room.reportingService().reportContent(action.eventId, -100, action.reason)
|
||||
}
|
||||
RoomDetailViewEvents.ActionSuccess(action)
|
||||
} catch (failure: Throwable) {
|
||||
RoomDetailViewEvents.ActionFailure(action, failure)
|
||||
|
@ -174,15 +174,20 @@ class RoomMemberProfileViewModel @AssistedInject constructor(
|
||||
}
|
||||
|
||||
private fun handleReportAction() {
|
||||
room ?: return
|
||||
viewModelScope.launch {
|
||||
val event = try {
|
||||
// The API need an Event, use the latest Event.
|
||||
val latestEventId = room?.roomSummary()?.latestPreviewableEvent?.eventId ?: return@launch
|
||||
// The API needs an Event, use user state event if available (it should always be available)
|
||||
val userStateEventId = room.stateService()
|
||||
.getStateEvent(EventType.STATE_ROOM_MEMBER, QueryStringValue.Equals(initialState.userId))
|
||||
?.eventId
|
||||
// If not found fallback to the latest event
|
||||
val eventId = (userStateEventId ?: room.roomSummary()?.latestPreviewableEvent?.eventId) ?: return@launch
|
||||
room.reportingService()
|
||||
.reportContent(
|
||||
eventId = latestEventId,
|
||||
eventId = eventId,
|
||||
score = -100,
|
||||
reason = "Reporting user ${initialState.userId} (eventId is not relevant)"
|
||||
reason = "Reporting user ${initialState.userId}"
|
||||
)
|
||||
RoomMemberProfileViewEvents.OnReportActionSuccess
|
||||
} catch (failure: Throwable) {
|
||||
|
Loading…
Reference in New Issue
Block a user