Add capability for emoji reaction push notifications
This commit is contained in:
		
							parent
							
								
									d33b9e7b33
								
							
						
					
					
						commit
						3ce11b830e
					
				
					 2 changed files with 29 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -16,7 +16,7 @@ defmodule Pleroma.Web.Push.Impl do
 | 
			
		|||
  require Logger
 | 
			
		||||
  import Ecto.Query
 | 
			
		||||
 | 
			
		||||
  @types ["Create", "Follow", "Announce", "Like", "Move"]
 | 
			
		||||
  @types ["Create", "Follow", "Announce", "Like", "Move", "EmojiReact"]
 | 
			
		||||
 | 
			
		||||
  @doc "Performs sending notifications for user subscriptions"
 | 
			
		||||
  @spec perform(Notification.t()) :: list(any) | :error | {:error, :unknown_type}
 | 
			
		||||
| 
						 | 
				
			
			@ -149,6 +149,15 @@ def format_body(
 | 
			
		|||
    "@#{actor.nickname} repeated: #{Utils.scrub_html_and_truncate(content, 80)}"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def format_body(
 | 
			
		||||
        %{activity: %{data: %{"type" => "EmojiReact", "content" => content}}},
 | 
			
		||||
        actor,
 | 
			
		||||
        _object,
 | 
			
		||||
        _mastodon_type
 | 
			
		||||
      ) do
 | 
			
		||||
    "@#{actor.nickname} has reacted with #{content}"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  def format_body(
 | 
			
		||||
        %{activity: %{data: %{"type" => type}}} = notification,
 | 
			
		||||
        actor,
 | 
			
		||||
| 
						 | 
				
			
			@ -179,6 +188,7 @@ def format_title(%{type: type}, mastodon_type) do
 | 
			
		|||
      "reblog" -> "New Repeat"
 | 
			
		||||
      "favourite" -> "New Favorite"
 | 
			
		||||
      "pleroma:chat_mention" -> "New Chat Message"
 | 
			
		||||
      "pleroma:emoji_reaction" -> "New Reaction"
 | 
			
		||||
      type -> "New #{String.capitalize(type || "event")}"
 | 
			
		||||
    end
 | 
			
		||||
  end
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -184,6 +184,24 @@ test "renders title and body for like activity" do
 | 
			
		|||
             "New Favorite"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  test "renders title and body for pleroma:emoji_reaction activity" do
 | 
			
		||||
    user = insert(:user, nickname: "Bob")
 | 
			
		||||
 | 
			
		||||
    {:ok, activity} =
 | 
			
		||||
      CommonAPI.post(user, %{
 | 
			
		||||
        status: "This post is a really good post!"
 | 
			
		||||
      })
 | 
			
		||||
 | 
			
		||||
    {:ok, activity} = CommonAPI.react_with_emoji(activity.id, user, "👍")
 | 
			
		||||
    object = Object.normalize(activity)
 | 
			
		||||
 | 
			
		||||
    assert Impl.format_body(%{activity: activity, type: "pleroma:emoji_reaction"}, user, object) ==
 | 
			
		||||
             "@Bob has reacted with 👍"
 | 
			
		||||
 | 
			
		||||
    assert Impl.format_title(%{activity: activity, type: "pleroma:emoji_reaction"}) ==
 | 
			
		||||
             "New Reaction"
 | 
			
		||||
  end
 | 
			
		||||
 | 
			
		||||
  test "renders title for create activity with direct visibility" do
 | 
			
		||||
    user = insert(:user, nickname: "Bob")
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue