bites you
This commit is contained in:
parent
321016ff86
commit
c70df5fb2a
7 changed files with 36 additions and 6 deletions
|
@ -1,4 +1,6 @@
|
|||
## akkoma
|
||||
## snaccoma: akkoma with bites
|
||||
|
||||
this is a silly little fork which can receive [Bite](https://ns.mia.jetzt/as/) activities
|
||||
|
||||
*a smallish microblogging platform, aka the cooler pleroma*
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ defmodule Pleroma.Notification do
|
|||
pleroma:report
|
||||
reblog
|
||||
poll
|
||||
bite
|
||||
}
|
||||
|
||||
def changeset(%Notification{} = notification, attrs) do
|
||||
|
@ -402,7 +403,7 @@ defmodule Pleroma.Notification do
|
|||
end
|
||||
|
||||
def create_notifications(%Activity{data: %{"type" => type}} = activity, options)
|
||||
when type in ["Follow", "Like", "Announce", "Move", "EmojiReact", "Flag", "Update"] do
|
||||
when type in ["Follow", "Like", "Announce", "Move", "EmojiReact", "Flag", "Update", "Bite"] do
|
||||
do_create_notifications(activity, options)
|
||||
end
|
||||
|
||||
|
@ -459,6 +460,9 @@ defmodule Pleroma.Notification do
|
|||
"Update" ->
|
||||
"update"
|
||||
|
||||
"Bite" ->
|
||||
"bite"
|
||||
|
||||
t ->
|
||||
raise "No notification type for activity type #{t}"
|
||||
end
|
||||
|
@ -532,7 +536,8 @@ defmodule Pleroma.Notification do
|
|||
"Move",
|
||||
"EmojiReact",
|
||||
"Flag",
|
||||
"Update"
|
||||
"Update",
|
||||
"Bite"
|
||||
] do
|
||||
potential_receiver_ap_ids = get_potential_receiver_ap_ids(activity)
|
||||
|
||||
|
|
|
@ -186,6 +186,13 @@ defmodule Pleroma.Web.ActivityPub.SideEffects do
|
|||
{:ok, object, meta}
|
||||
end
|
||||
|
||||
# Tasks this handles
|
||||
# - Set up bite notification
|
||||
def handle(%{data: %{"type" => "Bite"}} = object, meta) do
|
||||
Notification.create_notifications(object)
|
||||
{:ok, object, meta}
|
||||
end
|
||||
|
||||
# Tasks this handles
|
||||
# - Actually create object
|
||||
# - Rollback if we couldn't create it
|
||||
|
|
|
@ -485,7 +485,7 @@ defmodule Pleroma.Web.ActivityPub.Transmogrifier do
|
|||
%{"type" => type} = data,
|
||||
_options
|
||||
)
|
||||
when type in ~w{Update Block Follow Accept Reject} do
|
||||
when type in ~w{Update Block Follow Accept Reject Bite} do
|
||||
with {:ok, %User{}} <- ObjectValidator.fetch_actor(data),
|
||||
{:ok, activity, _} <-
|
||||
Pipeline.common_pipeline(data, local: false) do
|
||||
|
|
|
@ -118,7 +118,7 @@ defmodule Pleroma.Web.Federator do
|
|||
|
||||
e ->
|
||||
# Just drop those for now
|
||||
Logger.debug(fn -> "Unhandled activity\n" <> Jason.encode!(params, pretty: true) end)
|
||||
Logger.debug(fn -> "Unhandled activity (error: #{inspect(e)})\n" <> Jason.encode!(params, pretty: true) end)
|
||||
{:error, e}
|
||||
end
|
||||
end
|
||||
|
|
|
@ -128,7 +128,7 @@ defmodule Pleroma.Web.MastodonAPI.NotificationView do
|
|||
"pleroma:report" ->
|
||||
put_report(response, activity)
|
||||
|
||||
type when type in ["follow", "follow_request"] ->
|
||||
type when type in ["follow", "follow_request", "bite"] ->
|
||||
response
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
defmodule Pleroma.Repo.Migrations.AddBiteToNotificationsEnum do
|
||||
use Ecto.Migration
|
||||
|
||||
@disable_ddl_transaction true
|
||||
|
||||
def up do
|
||||
"""
|
||||
alter type notification_type add value if not exists 'bite'
|
||||
"""
|
||||
|> execute()
|
||||
end
|
||||
|
||||
def down do
|
||||
# Leave value in place
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue