From e9e6b2b0d0476dc0e873d3b6e7db424b64515aa9 Mon Sep 17 00:00:00 2001 From: The Major Date: Sat, 18 May 2024 22:05:22 +0000 Subject: [PATCH] fix an issue with message deletes --- lib/nostrum/cache/message_cache.ex | 2 +- lib/nostrum/cache/message_cache/mnesia.ex | 6 +++--- lib/nostrum/cache/message_cache/noop.ex | 2 +- lib/nostrum/shard/dispatch.ex | 9 ++------- test/nostrum/cache/message_cache_meta_test.exs | 4 ++-- 5 files changed, 9 insertions(+), 14 deletions(-) diff --git a/lib/nostrum/cache/message_cache.ex b/lib/nostrum/cache/message_cache.ex index cf22fc206..0ac796553 100644 --- a/lib/nostrum/cache/message_cache.ex +++ b/lib/nostrum/cache/message_cache.ex @@ -65,7 +65,7 @@ defmodule Nostrum.Cache.MessageCache do Expects the deleted message to be returned if it was found. """ - @callback delete(Channel.id(), Message.id()) :: Message.t() | :noop + @callback delete(Channel.id(), Message.id()) :: Message.t() | nil @doc """ Deletes multiple messages from the cache, any message id's given diff --git a/lib/nostrum/cache/message_cache/mnesia.ex b/lib/nostrum/cache/message_cache/mnesia.ex index 98aa66b8d..91be91a72 100644 --- a/lib/nostrum/cache/message_cache/mnesia.ex +++ b/lib/nostrum/cache/message_cache/mnesia.ex @@ -150,7 +150,7 @@ if Code.ensure_loaded?(:mnesia) do @impl MessageCache @doc "Removes a message from the cache." - @spec delete(Channel.id(), Message.id()) :: Message.t() | :noop + @spec delete(Channel.id(), Message.id()) :: Message.t() | nil def delete(channel_id, message_id) do :mnesia.activity(:sync_transaction, fn -> case :mnesia.read(@table_name, message_id, :write) do @@ -162,7 +162,7 @@ if Code.ensure_loaded?(:mnesia) do message _ -> - :noop + nil end end) end @@ -176,7 +176,7 @@ if Code.ensure_loaded?(:mnesia) do def bulk_delete(channel_id, message_ids) do Enum.reduce(message_ids, [], fn message_id, list -> case delete(channel_id, message_id) do - :noop -> + nil -> list message -> diff --git a/lib/nostrum/cache/message_cache/noop.ex b/lib/nostrum/cache/message_cache/noop.ex index 24a84cb45..bbc1ed3e6 100644 --- a/lib/nostrum/cache/message_cache/noop.ex +++ b/lib/nostrum/cache/message_cache/noop.ex @@ -34,7 +34,7 @@ defmodule Nostrum.Cache.MessageCache.Noop do def update(payload), do: {nil, Util.cast(payload, {:struct, Message})} @impl MessageCache - def delete(_channel_id, _message_id), do: :noop + def delete(_channel_id, _message_id), do: nil @impl MessageCache def bulk_delete(_channel_id, _message_ids), do: [] diff --git a/lib/nostrum/shard/dispatch.ex b/lib/nostrum/shard/dispatch.ex index 247d294b3..abe77ceb0 100644 --- a/lib/nostrum/shard/dispatch.ex +++ b/lib/nostrum/shard/dispatch.ex @@ -253,13 +253,8 @@ defmodule Nostrum.Shard.Dispatch do do: {event, MessageCache.create(p), state} def handle_event(:MESSAGE_DELETE = event, p, state) do - case MessageCache.delete(p.channel_id, p.id) do - {:ok, message} -> - {event, MessageDelete.to_struct(p, message), state} - - :noop -> - {event, MessageDelete.to_struct(p), state} - end + deleted_message = MessageCache.delete(p.channel_id, p.id) + {event, MessageDelete.to_struct(p, deleted_message), state} end def handle_event(:MESSAGE_DELETE_BULK = event, p, state) do diff --git a/test/nostrum/cache/message_cache_meta_test.exs b/test/nostrum/cache/message_cache_meta_test.exs index ed882ec17..c575a488f 100644 --- a/test/nostrum/cache/message_cache_meta_test.exs +++ b/test/nostrum/cache/message_cache_meta_test.exs @@ -108,8 +108,8 @@ defmodule Nostrum.Cache.MessageCacheMetaTest do end describe "delete/2" do - test "returns :noop on an uncached message" do - assert :noop == @cache.delete(10_258_109_258_109_258_125, 10_258_109_258_109_258_125) + test "returns nil on an uncached message" do + assert nil == @cache.delete(10_258_109_258_109_258_125, 10_258_109_258_109_258_125) end end end