aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-09-13 10:16:08 -0700
committerZeyla Hellyer <[email protected]>2018-09-13 10:17:04 -0700
commit60f84c687f7e58329f4df9722738be06e9b3bbc4 (patch)
tree5ef72acab9edd482ae0cae22684b2f3435a98456 /src
parentAdd tests for help (#387) (diff)
downloadserenity-60f84c687f7e58329f4df9722738be06e9b3bbc4.tar.xz
serenity-60f84c687f7e58329f4df9722738be06e9b3bbc4.zip
Revert "Old message on update (#368)"
This reverts commit 27ccf2c9c8ce785b54595eaabcebf86db07bf5bc.
Diffstat (limited to 'src')
-rw-r--r--src/cache/mod.rs41
-rw-r--r--src/client/dispatch.rs11
-rw-r--r--src/client/event_handler.rs17
-rw-r--r--src/model/event.rs57
4 files changed, 32 insertions, 94 deletions
diff --git a/src/cache/mod.rs b/src/cache/mod.rs
index e6e1006..780c364 100644
--- a/src/cache/mod.rs
+++ b/src/cache/mod.rs
@@ -576,47 +576,6 @@ impl Cache {
})
}
- /// Retrieves a [`Channel`]'s message from the cache based on the channel's and
- /// message's given Ids.
- ///
- /// **Note**: This will clone the entire message.
- ///
- /// # Examples
- ///
- /// Retrieving the message object from a channel, in a
- /// [`EventHandler::message`] context:
- ///
- /// ```rust,no_run
- /// use serenity::CACHE;
- ///
- /// # use serenity::model::id::{ChannelId, MessageId};
- /// # let message = ChannelId(0).message(MessageId(1)).unwrap();
- ///
- /// let cache = CACHE.read();
- /// let fetched_message = cache.message(message.channel_id, message.id);
- /// match fetched_message {
- /// Some(m) => {
- /// assert_eq!(message.content, m.content);
- /// },
- /// None => {
- /// println!("No message found in cache.");
- /// }
- /// }
- /// ```
- ///
- /// [`EventHandler::message`]: ../client/trait.EventHandler.html#method.message
- /// [`Channel`]: ../model/channel/struct.Channel.html
- #[inline]
- pub fn message<C, M>(&self, channel_id: C, message_id: M) -> Option<Message>
- where C: Into<ChannelId>, M: Into<MessageId> {
- self._message(channel_id.into(), message_id.into())
- }
-
- fn _message(&self, channel_id: ChannelId, message_id: MessageId) -> Option<Message> {
- self.messages.get(&channel_id).and_then(|messages| {
- messages.get(&message_id).cloned()
- })
- }
/// Retrieves a [`PrivateChannel`] from the cache's [`private_channels`]
/// map, if it exists.
///
diff --git a/src/client/dispatch.rs b/src/client/dispatch.rs
index e201852..3e3bcfa 100644
--- a/src/client/dispatch.rs
+++ b/src/client/dispatch.rs
@@ -497,20 +497,13 @@ fn handle_event<H: EventHandler + Send + Sync + 'static>(
});
},
DispatchEvent::Model(Event::MessageUpdate(mut event)) => {
- let _before = update!(event);
+ update!(event);
let context = context(data, runner_tx, shard_id);
let event_handler = Arc::clone(event_handler);
threadpool.execute(move || {
- 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);
- }}
+ 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 5af7314..32fdaa1 100644
--- a/src/client/event_handler.rs
+++ b/src/client/event_handler.rs
@@ -212,18 +212,6 @@ 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<MessageId>) {}
- /// 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<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) {}
-
/// Dispatched when a new reaction is attached to a message.
///
/// Provides the reaction's data.
@@ -239,6 +227,11 @@ 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<Presence>) {}
/// Dispatched when a user's presence is updated (e.g off -> on).
diff --git a/src/model/event.rs b/src/model/event.rs
index 03905cf..191c98f 100644
--- a/src/model/event.rs
+++ b/src/model/event.rs
@@ -847,48 +847,41 @@ pub struct MessageUpdateEvent {
#[cfg(feature = "cache")]
impl CacheUpdate for MessageUpdateEvent {
- type Output = Message;
+ type Output = ();
fn update(&mut self, cache: &mut Cache) -> Option<Self::Output> {
- if let Some(messages) = cache.messages.get_mut(&self.channel_id) {
- if let Some(message) = messages.get_mut(&self.id) {
- let item = message.clone();
-
- if let Some(attachments) = self.attachments.clone() {
- message.attachments = attachments;
- }
+ let messages = cache.messages.get_mut(&self.channel_id)?;
+ let message = messages.get_mut(&self.id)?;
- if let Some(content) = self.content.clone() {
- message.content = content;
- }
+ if let Some(attachments) = self.attachments.clone() {
+ message.attachments = attachments;
+ }
- if let Some(edited_timestamp) = self.edited_timestamp {
- message.edited_timestamp = Some(edited_timestamp);
- }
+ if let Some(content) = self.content.clone() {
+ message.content = content;
+ }
- if let Some(mentions) = self.mentions.clone() {
- message.mentions = mentions;
- }
+ if let Some(edited_timestamp) = self.edited_timestamp {
+ message.edited_timestamp = Some(edited_timestamp);
+ }
- if let Some(mention_everyone) = self.mention_everyone {
- message.mention_everyone = mention_everyone;
- }
+ if let Some(mentions) = self.mentions.clone() {
+ message.mentions = mentions;
+ }
- if let Some(mention_roles) = self.mention_roles.clone() {
- message.mention_roles = mention_roles;
- }
+ if let Some(mention_everyone) = self.mention_everyone {
+ message.mention_everyone = mention_everyone;
+ }
- if let Some(pinned) = self.pinned {
- message.pinned = pinned;
- }
+ if let Some(mention_roles) = self.mention_roles.clone() {
+ message.mention_roles = mention_roles;
+ }
- Some(item)
- } else {
- None
- }
- } else {
- None
+ if let Some(pinned) = self.pinned {
+ message.pinned = pinned;
}
+
+ None
}
}