bites you

This commit is contained in:
Erin Shepherd 2024-03-02 22:34:59 +01:00
parent 321016ff86
commit c70df5fb2a
7 changed files with 36 additions and 6 deletions

View file

@ -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*

View file

@ -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)

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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