Merge branch 'develop' into issue/1276
authorMaksim Pechnikov <parallel588@gmail.com>
Sun, 29 Mar 2020 03:57:34 +0000 (06:57 +0300)
committerMaksim Pechnikov <parallel588@gmail.com>
Sun, 29 Mar 2020 03:57:34 +0000 (06:57 +0300)
1  2 
CHANGELOG.md
docs/API/differences_in_mastoapi_responses.md
lib/pleroma/notification.ex
mix.lock
test/notification_test.exs

diff --cc CHANGELOG.md
Simple merge
index 87a45f7f07db55d4f1f53b3f8fbff2742d2ebd95,04ee510b9f13fa7d346064988dacaea2d95babc1..3084bac3b47f2ac420b85bd8a0cd6bd89fbb6f04
@@@ -38,19 -38,8 +40,19 @@@ defmodule Pleroma.Notification d
      |> cast(attrs, [:seen])
    end
  
 +  @spec last_read_query(User.t()) :: Ecto.Queryable.t()
 +  def last_read_query(user) do
 +    from(q in Pleroma.Notification,
 +      where: q.user_id == ^user.id,
 +      where: q.seen == true,
 +      select: type(q.id, :string),
 +      limit: 1,
 +      order_by: [desc: :id]
 +    )
 +  end
 +
    defp for_user_query_ap_id_opts(user, opts) do
-     ap_id_relations =
+     ap_id_relationships =
        [:block] ++
          if opts[@include_muted_option], do: [], else: [:notification_mute]
  
      {:ok, notifications}
    end
  
-   def create_notifications(_), do: {:ok, []}
    # TODO move to sql, too.
-   def create_notification(%Activity{} = activity, %User{} = user) do
+   def create_notification(%Activity{} = activity, %User{} = user, do_send \\ true) do
      unless skip?(activity, user) do
 -      notification = %Notification{user_id: user.id, activity: activity}
 -      {:ok, notification} = Repo.insert(notification)
 +      {:ok, %{notification: notification}} =
 +        Multi.new()
 +        |> Multi.insert(:notification, %Notification{user_id: user.id, activity: activity})
 +        |> Marker.multi_set_last_read_id(user, "notifications")
 +        |> Repo.transaction()
  
-       ["user", "user:notification"]
-       |> Streamer.stream(notification)
+       if do_send do
+         Streamer.stream(["user", "user:notification"], notification)
+         Push.send(notification)
+       end
  
-       Push.send(notification)
        notification
      end
    end
diff --cc mix.lock
index 6cbf31a0aa88095643fb61eb72d3948936716c8a,62e14924a648604d46120a3c4e78fe5582b24c58..bdbc05c04562274dbed6bfed3ad9fe30fd9e5255
+++ b/mix.lock
@@@ -2,8 -2,9 +2,9 @@@
    "accept": {:hex, :accept, "0.3.5", "b33b127abca7cc948bbe6caa4c263369abf1347cfa9d8e699c6d214660f10cd1", [:rebar3], [], "hexpm", "11b18c220bcc2eab63b5470c038ef10eb6783bcb1fcdb11aa4137defa5ac1bb8"},
    "auto_linker": {:git, "https://git.pleroma.social/pleroma/auto_linker.git", "95e8188490e97505c56636c1379ffdf036c1fdde", [ref: "95e8188490e97505c56636c1379ffdf036c1fdde"]},
    "base62": {:hex, :base62, "1.2.1", "4866763e08555a7b3917064e9eef9194c41667276c51b59de2bc42c6ea65f806", [:mix], [{:custom_base, "~> 0.2.1", [hex: :custom_base, repo: "hexpm", optional: false]}], "hexpm", "3b29948de2013d3f93aa898c884a9dff847e7aec75d9d6d8c1dc4c61c2716c42"},
 -  "base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
 -  "bbcode": {:git, "https://git.pleroma.social/pleroma/elixir-libraries/bbcode.git", "f2d267675e9a7e1ad1ea9beb4cc23382762b66c2", [ref: "v0.2.0"]},
 +  "base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm", "fab09b20e3f5db886725544cbcf875b8e73ec93363954eb8a1a9ed834aa8c1f9"},
 +  "bbcode": {:hex, :bbcode, "0.1.1", "0023e2c7814119b2e620b7add67182e3f6019f92bfec9a22da7e99821aceba70", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5a981b98ac7d366a9b6bf40eac389aaf4d6e623c631e6b6f8a6b571efaafd338"},
+   "bbcode_pleroma": {:hex, :bbcode_pleroma, "0.2.0", "d36f5bca6e2f62261c45be30fa9b92725c0655ad45c99025cb1c3e28e25803ef", [:mix], [{:nimble_parsec, "~> 0.5", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "19851074419a5fedb4ef49e1f01b30df504bb5dbb6d6adfc135238063bebd1c3"},
    "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm", "3ad58ae787e9c7c94dd7ceda3b587ec2c64604563e049b2a0e8baafae832addb"},
    "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"},
    "cachex": {:hex, :cachex, "3.2.0", "a596476c781b0646e6cb5cd9751af2e2974c3e0d5498a8cab71807618b74fe2f", [:mix], [{:eternal, "~> 1.2", [hex: :eternal, repo: "hexpm", optional: false]}, {:jumper, "~> 1.0", [hex: :jumper, repo: "hexpm", optional: false]}, {:sleeplocks, "~> 1.1", [hex: :sleeplocks, repo: "hexpm", optional: false]}, {:unsafe, "~> 1.0", [hex: :unsafe, repo: "hexpm", optional: false]}], "hexpm", "aef93694067a43697ae0531727e097754a9e992a1e7946296f5969d6dd9ac986"},
Simple merge