aboutsummaryrefslogtreecommitdiff
path: root/src/client
diff options
context:
space:
mode:
authorMishio595 <[email protected]>2018-07-24 21:04:12 -0600
committerMishio595 <[email protected]>2018-07-24 21:04:12 -0600
commitf1a9c5ad9cc50f53428c7dc29e6b8cda38321159 (patch)
tree1b8ecca40e40e0f5251ec68c74bf3c71ff58a42e /src/client
parentadd method Colour::hex (diff)
parentEventHandler::message_update with cache feature sends old message if available (diff)
downloadserenity-f1a9c5ad9cc50f53428c7dc29e6b8cda38321159.tar.xz
serenity-f1a9c5ad9cc50f53428c7dc29e6b8cda38321159.zip
Merge branch 'old_message_on_update'
Diffstat (limited to 'src/client')
-rw-r--r--src/client/dispatch.rs16
-rw-r--r--src/client/event_handler.rs7
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>) {}