|
|
|
@ -265,6 +265,27 @@ class RustTimeline(
@@ -265,6 +265,27 @@ class RustTimeline(
|
|
|
|
|
messageEventContentFromParts(body, htmlBody).withMentions(mentions.map()).use { content -> |
|
|
|
|
runCatching { |
|
|
|
|
inner.send(content) |
|
|
|
|
Unit |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override suspend fun redactEvent(eventId: EventId?, transactionId: TransactionId?, reason: String?): Result<Boolean> = withContext(dispatcher) { |
|
|
|
|
runCatching { |
|
|
|
|
when { |
|
|
|
|
eventId != null -> { |
|
|
|
|
inner.getEventTimelineItemByEventId(eventId.value).use { |
|
|
|
|
inner.redactEvent(item = it, reason = reason) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
transactionId != null -> { |
|
|
|
|
inner.getEventTimelineItemByTransactionId(transactionId.value).use { |
|
|
|
|
inner.redactEvent(item = it, reason = reason) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
else -> { |
|
|
|
|
error("Either eventId or transactionId must be non-null") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -277,21 +298,27 @@ class RustTimeline(
@@ -277,21 +298,27 @@ class RustTimeline(
|
|
|
|
|
mentions: List<Mention>, |
|
|
|
|
): Result<Unit> = |
|
|
|
|
withContext(dispatcher) { |
|
|
|
|
if (originalEventId != null) { |
|
|
|
|
runCatching { |
|
|
|
|
val editedEvent = specialModeEventTimelineItem ?: inner.getEventTimelineItemByEventId(originalEventId.value) |
|
|
|
|
editedEvent.use { |
|
|
|
|
inner.edit( |
|
|
|
|
newContent = messageEventContentFromParts(body, htmlBody).withMentions(mentions.map()), |
|
|
|
|
editItem = it, |
|
|
|
|
) |
|
|
|
|
runCatching { |
|
|
|
|
when { |
|
|
|
|
originalEventId != null -> { |
|
|
|
|
val editedEvent = specialModeEventTimelineItem ?: inner.getEventTimelineItemByEventId(originalEventId.value) |
|
|
|
|
editedEvent.use { |
|
|
|
|
inner.edit( |
|
|
|
|
newContent = messageEventContentFromParts(body, htmlBody).withMentions(mentions.map()), |
|
|
|
|
editItem = it, |
|
|
|
|
) |
|
|
|
|
} |
|
|
|
|
specialModeEventTimelineItem = null |
|
|
|
|
} |
|
|
|
|
transactionId != null -> { |
|
|
|
|
inner.getEventTimelineItemByTransactionId(transactionId.value).use { |
|
|
|
|
inner.redactEvent(item = it, reason = null) |
|
|
|
|
} |
|
|
|
|
Unit |
|
|
|
|
} |
|
|
|
|
else -> { |
|
|
|
|
error("Either originalEventId or transactionId must be non null") |
|
|
|
|
} |
|
|
|
|
specialModeEventTimelineItem = null |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
runCatching { |
|
|
|
|
transactionId?.let { cancelSend(it) } |
|
|
|
|
inner.send(messageEventContentFromParts(body, htmlBody)) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -395,17 +422,7 @@ class RustTimeline(
@@ -395,17 +422,7 @@ class RustTimeline(
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override suspend fun retrySendMessage(transactionId: TransactionId): Result<Unit> = withContext(dispatcher) { |
|
|
|
|
runCatching { |
|
|
|
|
inner.retrySend(transactionId.value) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override suspend fun cancelSend(transactionId: TransactionId): Result<Unit> = withContext(dispatcher) { |
|
|
|
|
runCatching { |
|
|
|
|
inner.cancelSend(transactionId.value) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
override suspend fun cancelSend(transactionId: TransactionId): Result<Boolean> = redactEvent(eventId = null, transactionId = transactionId, reason = null) |
|
|
|
|
|
|
|
|
|
override suspend fun sendLocation( |
|
|
|
|
body: String, |
|
|
|
|