Merge branch 'develop' into feature/thread-muting
authorKaren Konou <konoukaren@gmail.com>
Mon, 11 Feb 2019 11:10:10 +0000 (12:10 +0100)
committerKaren Konou <konoukaren@gmail.com>
Mon, 11 Feb 2019 11:10:49 +0000 (12:10 +0100)
1  2 
lib/pleroma/notification.ex
lib/pleroma/web/common_api/common_api.ex
lib/pleroma/web/mastodon_api/mastodon_api_controller.ex
lib/pleroma/web/mastodon_api/views/status_view.ex
test/web/mastodon_api/mastodon_api_controller_test.exs

index 9ebfd5cb04f16eff4a66d688698f9c5ebe9add5f,c7c925c890a16c4c93fbfdd55a02b3b57259950c..c88512567bada8f768b6000bc18575afe3110d09
@@@ -4,9 -4,13 +4,14 @@@
  
  defmodule Pleroma.Notification do
    use Ecto.Schema
-   alias Pleroma.{User, Activity, Notification, Repo}
+   alias Pleroma.User
+   alias Pleroma.Activity
+   alias Pleroma.Notification
+   alias Pleroma.Repo
    alias Pleroma.Web.CommonAPI.Utils
 +  alias Pleroma.Web.CommonAPI
    import Ecto.Query
  
    schema "notifications" do
index 7782c64ddb31f76cecf2242b4cfba00c20612cb5,c0d6fb5c4743272b6be60f892c599030fa07a3c4..86f249c54fb0fe620f2d48d8f25b414b7ba02477
@@@ -3,7 -3,10 +3,11 @@@
  # SPDX-License-Identifier: AGPL-3.0-only
  
  defmodule Pleroma.Web.CommonAPI do
-   alias Pleroma.{User, Repo, Activity, Object, ThreadMute}
+   alias Pleroma.User
+   alias Pleroma.Repo
+   alias Pleroma.Activity
+   alias Pleroma.Object
++  alias Pleroma.ThreadMute
    alias Pleroma.Web.ActivityPub.ActivityPub
    alias Pleroma.Web.ActivityPub.Utils
    alias Pleroma.Formatter
index 18fa16b03e6725fb1c576bfb4b0ed226d5b12597,06f8703935674c887cb323d3a0ed0cc8a9ec064a..dcaeccac698d0bee14dee817dcc48a11b8dc06fe
@@@ -445,29 -456,6 +456,31 @@@ defmodule Pleroma.Web.MastodonAPI.Masto
      end
    end
  
 +  def mute_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
 +    activity = Activity.get_by_id(id)
++
 +    with {:ok, activity} <- CommonAPI.add_mute(user, activity) do
 +      conn
 +      |> put_view(StatusView)
 +      |> try_render("status.json", %{activity: activity, for: user, as: :activity})
 +    else
 +      {:error, reason} ->
 +        conn
 +        |> put_resp_content_type("application/json")
 +        |> send_resp(:bad_request, Jason.encode!(%{"error" => reason}))
 +    end
 +  end
 +
 +  def unmute_conversation(%{assigns: %{user: user}} = conn, %{"id" => id}) do
 +    activity = Activity.get_by_id(id)
++
 +    with {:ok, activity} <- CommonAPI.remove_mute(user, activity) 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
      notifications = Notification.for_user(user, params)
  
index 368b79ea78f8249af24e2f17241d8af64902d453,f51a2ebb0e5ccd4d6039ce962886f1dfcf39da3b..69f5f992c9bf7b365f57436fe942971794cc8a40
@@@ -9,11 -9,10 +9,11 @@@ defmodule Pleroma.Web.MastodonAPI.Statu
    alias Pleroma.HTML
    alias Pleroma.Repo
    alias Pleroma.User
 +  alias Pleroma.Web.CommonAPI
    alias Pleroma.Web.CommonAPI.Utils
-   alias Pleroma.Web.MediaProxy
    alias Pleroma.Web.MastodonAPI.AccountView
    alias Pleroma.Web.MastodonAPI.StatusView
+   alias Pleroma.Web.MediaProxy
  
    # TODO: Add cached version.
    defp get_replied_to_activities(activities) do
index f7c0596637477174c82672e40ea4f1688c426728,f8da86004bc7367fb88be45b1982a8ee8a246ca4..1a60ad8e6c50b7eb76dbed4b188c92fc6f9fb203
@@@ -1749,37 -1749,4 +1749,36 @@@ defmodule Pleroma.Web.MastodonAPI.Masto
  
      assert [json_response(response2, 200)] == json_response(bookmarks, 200)
    end
 +
 +  describe "conversation muting" do
 +    setup do
 +      user = insert(:user)
 +      {:ok, activity} = CommonAPI.post(user, %{"status" => "HIE"})
 +
 +      [user: user, activity: activity]
 +    end
 +
 +    test "mute conversation", %{conn: conn, user: user, activity: activity} do
 +      id_str = to_string(activity.id)
 +
 +      assert %{"id" => ^id_str, "muted" => true} =
 +               conn
 +               |> assign(:user, user)
 +               |> post("/api/v1/statuses/#{activity.id}/mute")
 +               |> json_response(200)
 +    end
 +
 +    test "unmute conversation", %{conn: conn, user: user, activity: activity} do
 +      {:ok, _} = CommonAPI.add_mute(user, activity)
 +
 +      id_str = to_string(activity.id)
 +      user = refresh_record(user)
 +
 +      assert %{"id" => ^id_str, "muted" => false} =
 +               conn
 +               |> assign(:user, user)
 +               |> post("/api/v1/statuses/#{activity.id}/unmute")
 +               |> json_response(200)
 +    end
 +  end
  end