forked from mirrors/akkoma
Migration and some boilerplate stuff
This commit is contained in:
parent
03991e7bc5
commit
f4ff4ffba2
4 changed files with 56 additions and 0 deletions
|
@ -445,6 +445,22 @@ defmodule Pleroma.Web.MastodonAPI.MastodonAPIController do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def mute_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
||||||
|
with {:ok, activity} <- Pleroma.Web.ThreadMute.add_mute(user, id) do
|
||||||
|
conn
|
||||||
|
|> put_view(StatusView)
|
||||||
|
|> try_render("status.json", %{activity: activity, for: user, as: :activity})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def unmute_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
|
||||||
|
with {:ok, activity} <- Pleroma.Web.ThreadMute.remove_mute(user, id) do
|
||||||
|
conn
|
||||||
|
|> put_view(StatusView)
|
||||||
|
|> try_render("status.json", %{activity: activity, for: user, as: :activity})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def notifications(%{assigns: %{user: user}} = conn, params) do
|
def notifications(%{assigns: %{user: user}} = conn, params) do
|
||||||
notifications = Notification.for_user(user, params)
|
notifications = Notification.for_user(user, params)
|
||||||
|
|
||||||
|
|
|
@ -198,6 +198,8 @@ defmodule Pleroma.Web.Router do
|
||||||
post("/statuses/:id/unpin", MastodonAPIController, :unpin_status)
|
post("/statuses/:id/unpin", MastodonAPIController, :unpin_status)
|
||||||
post("/statuses/:id/bookmark", MastodonAPIController, :bookmark_status)
|
post("/statuses/:id/bookmark", MastodonAPIController, :bookmark_status)
|
||||||
post("/statuses/:id/unbookmark", MastodonAPIController, :unbookmark_status)
|
post("/statuses/:id/unbookmark", MastodonAPIController, :unbookmark_status)
|
||||||
|
post("/statuses/:id/mute", MastodonAPIController, :mute_conversation)
|
||||||
|
post("/statuses/:id/unmute", MastodonAPIController, :unmute_conversation)
|
||||||
|
|
||||||
post("/notifications/clear", MastodonAPIController, :clear_notifications)
|
post("/notifications/clear", MastodonAPIController, :clear_notifications)
|
||||||
post("/notifications/dismiss", MastodonAPIController, :dismiss_notification)
|
post("/notifications/dismiss", MastodonAPIController, :dismiss_notification)
|
||||||
|
|
26
lib/pleroma/web/thread_mute.ex
Normal file
26
lib/pleroma/web/thread_mute.ex
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Pleroma: A lightweight social networking server
|
||||||
|
# Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
|
||||||
|
# SPDX-License-Identifier: AGPL-3.0-only
|
||||||
|
|
||||||
|
defmodule Pleroma.Web.ThreadMute do
|
||||||
|
use Ecto.Schema
|
||||||
|
|
||||||
|
alias Pleroma.{Activity, Notification, User}
|
||||||
|
|
||||||
|
schema "thread_mutes" do
|
||||||
|
field(:user_id, :string)
|
||||||
|
field(:context, :string)
|
||||||
|
end
|
||||||
|
|
||||||
|
def add_mute(user, id) do
|
||||||
|
%{id: user_id} = user
|
||||||
|
%{data: %{"context" => context}} = Activity.get_by_id(id)
|
||||||
|
Pleroma.Repo.insert(%Pleroma.Web.ThreadMute{user_id: user_id, context: context})
|
||||||
|
end
|
||||||
|
|
||||||
|
def remove_mute(user, id) do
|
||||||
|
end
|
||||||
|
|
||||||
|
def mute_thread() do
|
||||||
|
end
|
||||||
|
end
|
12
priv/repo/migrations/20190205114625_create_thread_mutes.exs
Normal file
12
priv/repo/migrations/20190205114625_create_thread_mutes.exs
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.CreateThreadMutes do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
create table(:thread_mutes) do
|
||||||
|
add :user_id, references(:users, type: :uuid, on_delete: :delete_all)
|
||||||
|
add :context, :string
|
||||||
|
end
|
||||||
|
|
||||||
|
create index(:thread_mutes, [:user_id])
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue