diff options
| author | kaniini <nenolod@gmail.com> | 2018-11-07 22:33:06 +0000 | 
|---|---|---|
| committer | kaniini <nenolod@gmail.com> | 2018-11-07 22:33:06 +0000 | 
| commit | 4d627a5117bebc5eb298879d3fb3ccdb9801e077 (patch) | |
| tree | 150a1d59eae7e988f9d0d8b488e29e336ac0f356 /lib | |
| parent | b451a92d78b184dda63e6647f815f89c0e37fd98 (diff) | |
| parent | d675b8a16f84728134b09340a78db9e77f87839c (diff) | |
| download | pleroma-4d627a5117bebc5eb298879d3fb3ccdb9801e077.tar.gz pleroma-4d627a5117bebc5eb298879d3fb3ccdb9801e077.zip  | |
Merge branch 'feature/qvitter-notifications-dismiss' into 'develop'
qvitter notifications: add new "read notifications" API
See merge request pleroma/pleroma!431
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/pleroma/notification.ex | 14 | ||||
| -rw-r--r-- | lib/pleroma/web/router.ex | 4 | ||||
| -rw-r--r-- | lib/pleroma/web/twitter_api/twitter_api_controller.ex | 13 | 
3 files changed, 31 insertions, 0 deletions
diff --git a/lib/pleroma/notification.ex b/lib/pleroma/notification.ex index e0dcd9823..75d7461e4 100644 --- a/lib/pleroma/notification.ex +++ b/lib/pleroma/notification.ex @@ -42,6 +42,20 @@ defmodule Pleroma.Notification do      Repo.all(query)    end +  def set_read_up_to(%{id: user_id} = _user, id) do +    query = +      from( +        n in Notification, +        where: n.user_id == ^user_id, +        where: n.id <= ^id, +        update: [ +          set: [seen: true] +        ] +      ) + +    Repo.update_all(query, []) +  end +    def get(%{id: user_id} = _user, id) do      query =        from( diff --git a/lib/pleroma/web/router.ex b/lib/pleroma/web/router.ex index b461def82..06d0f0623 100644 --- a/lib/pleroma/web/router.ex +++ b/lib/pleroma/web/router.ex @@ -272,6 +272,10 @@ defmodule Pleroma.Web.Router do      get("/statuses/mentions_timeline", TwitterAPI.Controller, :mentions_timeline)      get("/qvitter/statuses/notifications", TwitterAPI.Controller, :notifications) +    # XXX: this is really a pleroma API, but we want to keep the pleroma namespace clean +    #      for now. +    post("/qvitter/statuses/notifications/read", TwitterAPI.Controller, :notifications_read) +      post("/statuses/update", TwitterAPI.Controller, :status_update)      post("/statuses/retweet/:id", TwitterAPI.Controller, :retweet)      post("/statuses/unretweet/:id", TwitterAPI.Controller, :unretweet) diff --git a/lib/pleroma/web/twitter_api/twitter_api_controller.ex b/lib/pleroma/web/twitter_api/twitter_api_controller.ex index 83d725f13..727469a66 100644 --- a/lib/pleroma/web/twitter_api/twitter_api_controller.ex +++ b/lib/pleroma/web/twitter_api/twitter_api_controller.ex @@ -133,6 +133,19 @@ defmodule Pleroma.Web.TwitterAPI.Controller do      |> render(NotificationView, "notification.json", %{notifications: notifications, for: user})    end +  def notifications_read(%{assigns: %{user: user}} = conn, %{"latest_id" => latest_id} = params) do +    Notification.set_read_up_to(user, latest_id) + +    notifications = Notification.for_user(user, params) + +    conn +    |> render(NotificationView, "notification.json", %{notifications: notifications, for: user}) +  end + +  def notifications_read(%{assigns: %{user: user}} = conn, _) do +    bad_request_reply(conn, "You need to specify latest_id") +  end +    def follow(%{assigns: %{user: user}} = conn, params) do      case TwitterAPI.follow(user, params) do        {:ok, user, followed, _activity} ->  | 
