Skip to content

Commit

Permalink
fix an issue with message deletes
Browse files Browse the repository at this point in the history
  • Loading branch information
Th3-M4jor committed May 18, 2024
1 parent 58f1dbc commit e9e6b2b
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 14 deletions.
2 changes: 1 addition & 1 deletion lib/nostrum/cache/message_cache.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions lib/nostrum/cache/message_cache/mnesia.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -162,7 +162,7 @@ if Code.ensure_loaded?(:mnesia) do
message

_ ->
:noop
nil
end
end)
end
Expand All @@ -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 ->
Expand Down
2 changes: 1 addition & 1 deletion lib/nostrum/cache/message_cache/noop.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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: []
Expand Down
9 changes: 2 additions & 7 deletions lib/nostrum/shard/dispatch.ex
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions test/nostrum/cache/message_cache_meta_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit e9e6b2b

Please # to comment.