Merge branch 'stable' into develop
This commit is contained in:
commit
99d4e0b332
6 changed files with 95 additions and 1 deletions
|
|
@ -90,6 +90,7 @@ With the port to Bootstrap 3, app/views/terms/default.haml has a new structure.
|
||||||
## Bug fixes
|
## Bug fixes
|
||||||
* Redirect to sign in page when a background request fails with 401 [#6496](https://github.com/diaspora/diaspora/pull/6496)
|
* Redirect to sign in page when a background request fails with 401 [#6496](https://github.com/diaspora/diaspora/pull/6496)
|
||||||
* Correctly skip setting sidekiq logfile on Heroku [#6500](https://github.com/diaspora/diaspora/pull/6500)
|
* Correctly skip setting sidekiq logfile on Heroku [#6500](https://github.com/diaspora/diaspora/pull/6500)
|
||||||
|
* Fix notifications for interactions by non-contacts [#6498](https://github.com/diaspora/diaspora/pull/6498)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -98,6 +98,7 @@ class Comment < ActiveRecord::Base
|
||||||
|
|
||||||
def initialize(person, target, text)
|
def initialize(person, target, text)
|
||||||
@text = text
|
@text = text
|
||||||
|
@dispatcher_opts = {additional_subscribers: target.comments_authors.where.not(id: person.id)}
|
||||||
super(person, target)
|
super(person, target)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ Feature: Notifications
|
||||||
| email |
|
| email |
|
||||||
| bob@bob.bob |
|
| bob@bob.bob |
|
||||||
| alice@alice.alice |
|
| alice@alice.alice |
|
||||||
|
| carol@carol.carol |
|
||||||
|
|
||||||
Scenario: someone shares with me
|
Scenario: someone shares with me
|
||||||
When I sign in as "bob@bob.bob"
|
When I sign in as "bob@bob.bob"
|
||||||
|
|
@ -67,6 +68,80 @@ Feature: Notifications
|
||||||
Then I should see "commented on your post"
|
Then I should see "commented on your post"
|
||||||
And I should have 1 email delivery
|
And I should have 1 email delivery
|
||||||
|
|
||||||
|
Scenario: unconnected user comments in reply to comment by another user who commented a post of someone who she shares with
|
||||||
|
Given "alice@alice.alice" has a public post with text "check this out!"
|
||||||
|
When I sign in as "bob@bob.bob"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great post, alice! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "carol@carol.carol"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great comment, bob! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment:nth-child(2)"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "bob@bob.bob"
|
||||||
|
And I follow "Notifications" in the header
|
||||||
|
Then the notification dropdown should be visible
|
||||||
|
And I should see "also commented on"
|
||||||
|
And I should have 3 email delivery
|
||||||
|
|
||||||
|
|
||||||
|
Scenario: unconnected user comments in reply to my comment to her post
|
||||||
|
Given "alice@alice.alice" has a public post with text "check this out!"
|
||||||
|
When I sign in as "carol@carol.carol"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great post, alice! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "alice@alice.alice"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great post, carol! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment:nth-child(2)"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "carol@carol.carol"
|
||||||
|
And I follow "Notifications" in the header
|
||||||
|
Then the notification dropdown should be visible
|
||||||
|
And I should see "also commented on"
|
||||||
|
And I should have 2 email delivery
|
||||||
|
|
||||||
|
Scenario: connected user comments in reply to my comment to an unconnected user's post
|
||||||
|
Given "alice@alice.alice" has a public post with text "check this out!"
|
||||||
|
And a user with email "bob@bob.bob" is connected with "carol@carol.carol"
|
||||||
|
When I sign in as "carol@carol.carol"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great post! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "bob@bob.bob"
|
||||||
|
And I am on "alice@alice.alice"'s page
|
||||||
|
And I focus the comment field
|
||||||
|
And I fill in the following:
|
||||||
|
| text | great post! |
|
||||||
|
And I press "Comment"
|
||||||
|
Then I should see "less than a minute ago" within ".comment:nth-child(2)"
|
||||||
|
When I sign out
|
||||||
|
And I sign in as "carol@carol.carol"
|
||||||
|
And I follow "Notifications" in the header
|
||||||
|
Then the notification dropdown should be visible
|
||||||
|
And I should see "also commented on"
|
||||||
|
And I should have 3 email delivery
|
||||||
|
|
||||||
Scenario: someone mentioned me in their post
|
Scenario: someone mentioned me in their post
|
||||||
Given a user with email "bob@bob.bob" is connected with "alice@alice.alice"
|
Given a user with email "bob@bob.bob" is connected with "alice@alice.alice"
|
||||||
And Alice has a post mentioning Bob
|
And Alice has a post mentioning Bob
|
||||||
|
|
|
||||||
|
|
@ -24,5 +24,8 @@ module Diaspora
|
||||||
update_all(:comments_count => self.comments.count)
|
update_all(:comments_count => self.comments.count)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def comments_authors
|
||||||
|
Person.where(id: comments.select(:author_id).distinct)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,13 +5,14 @@ module Federated
|
||||||
def initialize(user, target)
|
def initialize(user, target)
|
||||||
@user = user
|
@user = user
|
||||||
@target = target
|
@target = target
|
||||||
|
@dispatcher_opts ||= {}
|
||||||
end
|
end
|
||||||
|
|
||||||
def create!(options={})
|
def create!(options={})
|
||||||
relayable = build(options)
|
relayable = build(options)
|
||||||
if relayable.save!
|
if relayable.save!
|
||||||
logger.info "user:#{@user.id} dispatching #{relayable.class}:#{relayable.guid}"
|
logger.info "user:#{@user.id} dispatching #{relayable.class}:#{relayable.guid}"
|
||||||
Postzord::Dispatcher.defer_build_and_post(@user, relayable)
|
Postzord::Dispatcher.defer_build_and_post(@user, relayable, @dispatcher_opts)
|
||||||
relayable
|
relayable
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -61,5 +61,18 @@ class Postzord::Receiver::LocalBatch < Postzord::Receiver
|
||||||
@users.find_each do |user|
|
@users.find_each do |user|
|
||||||
Notification.notify(user, @object, @object.author)
|
Notification.notify(user, @object, @object.author)
|
||||||
end
|
end
|
||||||
|
if @object.respond_to?(:target)
|
||||||
|
additional_subscriber = @object.target.author.owner
|
||||||
|
elsif @object.respond_to?(:post)
|
||||||
|
additional_subscriber = @object.post.author.owner
|
||||||
|
end
|
||||||
|
|
||||||
|
Notification.notify(additional_subscriber, @object, @object.author) if needs_notification?(additional_subscriber)
|
||||||
|
end
|
||||||
|
|
||||||
|
private
|
||||||
|
|
||||||
|
def needs_notification?(person)
|
||||||
|
person && person != @object.author.owner && !@users.exists?(person.id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue