Current user is not a king to end polls, check event sender id instead.
This commit is contained in:
parent
db1152cb72
commit
2ad7a020cf
|
@ -446,6 +446,17 @@ internal class EventRelationsAggregationProcessor @Inject constructor(
|
||||||
isLocalEcho: Boolean) {
|
isLocalEcho: Boolean) {
|
||||||
val pollEventId = content.relatesTo?.eventId ?: return
|
val pollEventId = content.relatesTo?.eventId ?: return
|
||||||
|
|
||||||
|
val pollOwnerId = getPollEvent(roomId, pollEventId)?.root?.senderId
|
||||||
|
val isPollOwner = pollOwnerId == event.senderId
|
||||||
|
|
||||||
|
val powerLevelsHelper = stateEventDataSource.getStateEvent(roomId, EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.NoCondition)
|
||||||
|
?.content?.toModel<PowerLevelsContent>()
|
||||||
|
?.let { PowerLevelsHelper(it) }
|
||||||
|
if (!isPollOwner && !powerLevelsHelper?.isUserAbleToRedact(event.senderId ?: "").orFalse()) {
|
||||||
|
Timber.v("## Received poll.end event $pollEventId but user ${event.senderId} doesn't have enough power level in room $roomId")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
var existing = EventAnnotationsSummaryEntity.where(realm, roomId, pollEventId).findFirst()
|
var existing = EventAnnotationsSummaryEntity.where(realm, roomId, pollEventId).findFirst()
|
||||||
if (existing == null) {
|
if (existing == null) {
|
||||||
Timber.v("## POLL creating new relation summary for $pollEventId")
|
Timber.v("## POLL creating new relation summary for $pollEventId")
|
||||||
|
@ -463,17 +474,6 @@ internal class EventRelationsAggregationProcessor @Inject constructor(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val pollOwnerId = getPollEvent(roomId, pollEventId)?.root?.senderId
|
|
||||||
val isPollOwner = pollOwnerId == sessionManager.getSessionComponent(sessionId)?.session()?.myUserId
|
|
||||||
|
|
||||||
val powerLevelsHelper = stateEventDataSource.getStateEvent(roomId, EventType.STATE_ROOM_POWER_LEVELS, QueryStringValue.NoCondition)
|
|
||||||
?.content?.toModel<PowerLevelsContent>()
|
|
||||||
?.let { PowerLevelsHelper(it) }
|
|
||||||
if (!isPollOwner && !powerLevelsHelper?.isUserAbleToRedact(event.senderId ?: "").orFalse()) {
|
|
||||||
Timber.v("## Received poll.end event $pollEventId but user ${event.senderId} doesn't have enough power level in room $roomId")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
val txId = event.unsignedData?.transactionId
|
val txId = event.unsignedData?.transactionId
|
||||||
// is it a remote echo?
|
// is it a remote echo?
|
||||||
if (!isLocalEcho && existingPollSummary.sourceLocalEchoEvents.contains(txId)) {
|
if (!isLocalEcho && existingPollSummary.sourceLocalEchoEvents.contains(txId)) {
|
||||||
|
|
Loading…
Reference in New Issue