diff options
| author | Mishio595 <[email protected]> | 2018-07-24 21:04:12 -0600 |
|---|---|---|
| committer | Mishio595 <[email protected]> | 2018-07-24 21:04:12 -0600 |
| commit | f1a9c5ad9cc50f53428c7dc29e6b8cda38321159 (patch) | |
| tree | 1b8ecca40e40e0f5251ec68c74bf3c71ff58a42e /src/client | |
| parent | add method Colour::hex (diff) | |
| parent | EventHandler::message_update with cache feature sends old message if available (diff) | |
| download | serenity-f1a9c5ad9cc50f53428c7dc29e6b8cda38321159.tar.xz serenity-f1a9c5ad9cc50f53428c7dc29e6b8cda38321159.zip | |
Merge branch 'old_message_on_update'
Diffstat (limited to 'src/client')
| -rw-r--r-- | src/client/dispatch.rs | 16 | ||||
| -rw-r--r-- | src/client/event_handler.rs | 7 |
2 files changed, 21 insertions, 2 deletions
diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs index 04bd8c9..dd5b4fe 100644 --- a/src/client/dispatch.rs +++ b/src/client/dispatch.rs @@ -510,13 +510,25 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>( }); }, DispatchEvent::Model(Event::MessageUpdate(mut event)) => { - update!(event); + let _before = update!(event); + + let _after: Option<Message> = feature_cache! {{ + CACHE.read().message(event.channel_id, event.id) + } else { + None + }}; 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! {{ + 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..8100532 100644 --- a/src/client/event_handler.rs +++ b/src/client/event_handler.rs @@ -230,6 +230,13 @@ pub trait EventHandler { /// Dispatched when a message is updated. /// /// Provides the new data of the message. + #[cfg(feature = "cache")] + fn message_update(&self, _ctx: Context, _old_if_available: Option<Message>, _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) {} fn presence_replace(&self, _ctx: Context, _: Vec<Presence>) {} |