From 9fdff0acc0162299e704a4e4b9143e6dfffa02bc Mon Sep 17 00:00:00 2001 From: Mishio595 Date: Sun, 16 Sep 2018 11:37:51 -0600 Subject: Old message is optionally passed with message_update event --- src/client/dispatch.rs | 11 +++++++++-- src/client/event_handler.rs | 17 ++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) (limited to 'src/client') diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index 3e3bcfa..e201852 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -497,13 +497,20 @@ fn handle_event( }); }, DispatchEvent::Model(Event::MessageUpdate(mut event)) => { - update!(event); + let _before = update!(event); let context = context(data, runner_tx, shard_id); let event_handler = Arc::clone(event_handler); threadpool.execute(move || { - event_handler.message_update(context, event); + feature_cache! {{ + let after = CACHE.read().message(event.channel_id, event.id); + if let Some(after) = after { + event_handler.message_update(context, _before, after); + } + } else { + event_handler.message_update(context, event); + }} }); }, DispatchEvent::Model(Event::PresencesReplace(mut event)) => { diff --git a/src/client/event_handler.rs b/src/client/event_handler.rs index 32fdaa1..5af7314 100644 --- a/src/client/event_handler.rs +++ b/src/client/event_handler.rs @@ -212,6 +212,18 @@ pub trait EventHandler { /// Provides the channel's id and the deleted messages' ids. fn message_delete_bulk(&self, _ctx: Context, _channel_id: ChannelId, _multiple_deleted_messages_ids: Vec) {} + /// Dispatched when a message is updated. + /// + /// Provides the old message if available and the new message. + #[cfg(feature = "cache")] + fn message_update(&self, _ctx: Context, _old_if_available: Option, _new: Message) {} + + /// Dispatched when a message is updated. + /// + /// Provides the new data of the message. + #[cfg(not(feature = "cache"))] + fn message_update(&self, _ctx: Context, _new_data: MessageUpdateEvent) {} + /// Dispatched when a new reaction is attached to a message. /// /// Provides the reaction's data. @@ -227,11 +239,6 @@ pub trait EventHandler { /// Provides the channel's id and the message's id. fn reaction_remove_all(&self, _ctx: Context, _channel_id: ChannelId, _removed_from_message_id: MessageId) {} - /// Dispatched when a message is updated. - /// - /// Provides the new data of the message. - fn message_update(&self, _ctx: Context, _new_data: MessageUpdateEvent) {} - fn presence_replace(&self, _ctx: Context, _: Vec) {} /// Dispatched when a user's presence is updated (e.g off -> on). -- cgit v1.2.3