diff options
| author | Zeyla Hellyer <[email protected]> | 2018-09-13 10:16:08 -0700 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-09-13 10:17:04 -0700 |
| commit | 60f84c687f7e58329f4df9722738be06e9b3bbc4 (patch) | |
| tree | 5ef72acab9edd482ae0cae22684b2f3435a98456 /src | |
| parent | Add tests for help (#387) (diff) | |
| download | serenity-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.rs | 41 | ||||
| -rw-r--r-- | src/client/dispatch.rs | 11 | ||||
| -rw-r--r-- | src/client/event_handler.rs | 17 | ||||
| -rw-r--r-- | src/model/event.rs | 57 |
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 } } |