summaryrefslogtreecommitdiff
path: root/src/message/snapshot.rs
diff options
context:
space:
mode:
authorOwen Jacobson <owen@grimoire.ca>2024-10-08 22:43:22 -0400
committerOwen Jacobson <owen@grimoire.ca>2024-10-09 11:45:31 -0400
commit9e171096a72d3e63626df7b09970476aba28eb06 (patch)
tree7272c065fdb85148dc5c90d937fc7d13fc716ccf /src/message/snapshot.rs
parent653e2de752a97e377fc9963ba60d9408e7089528 (diff)
Use a two-tier hierarchy for events.
This will make it much easier to slot in new event types (login events!).
Diffstat (limited to 'src/message/snapshot.rs')
-rw-r--r--src/message/snapshot.rs10
1 files changed, 5 insertions, 5 deletions
diff --git a/src/message/snapshot.rs b/src/message/snapshot.rs
index a06fbc4..a8cf734 100644
--- a/src/message/snapshot.rs
+++ b/src/message/snapshot.rs
@@ -1,12 +1,12 @@
use super::{
- event::{Event, Kind, Sent},
+ event::{Event, Sent},
Id,
};
use crate::{channel::Channel, event::Instant, login::Login};
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize)]
pub struct Message {
- #[serde(skip)]
+ #[serde(flatten)]
pub sent: Instant,
pub channel: Channel,
pub sender: Login,
@@ -16,9 +16,9 @@ pub struct Message {
impl Message {
fn apply(state: Option<Self>, event: Event) -> Option<Self> {
- match (state, event.kind) {
- (None, Kind::Sent(event)) => Some(event.into()),
- (Some(message), Kind::Deleted(event)) if message.id == event.id => None,
+ match (state, event) {
+ (None, Event::Sent(event)) => Some(event.into()),
+ (Some(message), Event::Deleted(event)) if message.id == event.id => None,
(state, event) => panic!("invalid message event {event:#?} for state {state:#?}"),
}
}