diff options
Diffstat (limited to 'src/conversation')
| -rw-r--r-- | src/conversation/app.rs | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/conversation/app.rs b/src/conversation/app.rs index 30baf77..5e07292 100644 --- a/src/conversation/app.rs +++ b/src/conversation/app.rs @@ -86,18 +86,21 @@ impl<'a> Conversations<'a> { .not_found(|| DeleteError::NotFound(conversation.clone()))?; let messages = tx.messages().live(&conversation).await?; + let deleted_at = tx.sequence().next(deleted_at).await?; + let has_messages = messages .iter() - .map(message::History::as_snapshot) + .map(|message| message.as_of(deleted_at)) .any(|message| message.is_some()); if has_messages { return Err(DeleteError::NotEmpty(conversation.id().clone())); } - let deleted = tx.sequence().next(deleted_at).await?; - let conversation = conversation.delete(deleted)?; + let conversation = conversation.delete(deleted_at)?; - let events = conversation.events().filter(Sequence::start_from(deleted)); + let events = conversation + .events() + .filter(Sequence::start_from(deleted_at)); tx.conversations().record_events(events.clone()).await?; tx.commit().await?; |
