Only update interacted_at on new comments
I got feedback from many users, that they don't understand how the "my activity" stream is sorted, because they have posts on the top, but don't see why. The user doesn't see if a like was added, and it is also not imported for the user to see the post again then. And we have notifications if someone likes a users own posts, so no need to move it on top of the "my activity" stream here too. closes #7030
This commit is contained in:
parent
02ad431fb0
commit
4fea926057
7 changed files with 26 additions and 19 deletions
|
|
@ -5,6 +5,7 @@
|
|||
* Remove text color from notification mails and fix sender avatar [#7054](https://github.com/diaspora/diaspora/pull/7054)
|
||||
* Make the session cookies HttpOnly again [#7041](https://github.com/diaspora/diaspora/pull/7041)
|
||||
* Invalidate sessions with invalid CSRF tokens [#7050](https://github.com/diaspora/diaspora/pull/7050)
|
||||
* Liking a post will no longer update its interacted timestamp [#7030](https://github.com/diaspora/diaspora/pull/7030)
|
||||
|
||||
## Bug fixes
|
||||
* Post comments no longer get collapsed when interacting with a post [#7040](https://github.com/diaspora/diaspora/pull/7040)
|
||||
|
|
|
|||
|
|
@ -38,8 +38,9 @@ class Comment < ActiveRecord::Base
|
|||
self.text.strip! unless self.text.nil?
|
||||
end
|
||||
|
||||
after_commit :on => :create do
|
||||
self.parent.update_comments_counter
|
||||
after_commit on: :create do
|
||||
parent.update_comments_counter
|
||||
parent.touch(:interacted_at) if parent.respond_to?(:interacted_at)
|
||||
end
|
||||
|
||||
after_destroy do
|
||||
|
|
|
|||
|
|
@ -11,10 +11,6 @@ module Diaspora
|
|||
|
||||
delegate :public?, to: :parent
|
||||
delegate :author, :diaspora_handle, to: :parent, prefix: true
|
||||
|
||||
after_commit :on => :create do
|
||||
parent.touch(:interacted_at) if parent.respond_to?(:interacted_at)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -83,8 +83,8 @@ describe EvilQuery::Participation do
|
|||
expect(posts.map(&:id)).to match_array([@status_messageA.id, @status_messageB.id, @status_messageE.id])
|
||||
end
|
||||
|
||||
it "returns the posts that the user has commented on or liked with the most recently acted on ones first" do
|
||||
expect(posts.map(&:id)).to eq([@status_messageE.id, @status_messageA.id, @status_messageB.id])
|
||||
it "returns the posts that the user has commented on most recently first" do
|
||||
expect(posts.map(&:id)).to eq([@status_messageE.id, @status_messageB.id, @status_messageA.id])
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -66,6 +66,16 @@ describe Comment, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe "interacted_at" do
|
||||
it "sets the interacted at of the parent to the created at of the comment" do
|
||||
Timecop.travel(Time.zone.now + 1.minute)
|
||||
|
||||
comment = Comment::Generator.new(alice, status_bob, "why so formal?").build
|
||||
comment.save
|
||||
expect(status_bob.reload.interacted_at.to_i).to eq(comment.created_at.to_i)
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like "it is relayable" do
|
||||
let(:remote_parent) { FactoryGirl.create(:status_message, author: remote_raphael) }
|
||||
let(:local_parent) { local_luke.post(:status_message, text: "hi", to: local_luke.aspects.first) }
|
||||
|
|
|
|||
|
|
@ -43,6 +43,16 @@ describe Like, type: :model do
|
|||
end
|
||||
end
|
||||
|
||||
describe "interacted_at" do
|
||||
it "doesn't change the interacted at timestamp of the parent" do
|
||||
interacted_at = status.reload.interacted_at.to_i
|
||||
|
||||
Timecop.travel(Time.zone.now + 1.minute)
|
||||
Like::Generator.new(alice, status).build.save
|
||||
expect(status.reload.interacted_at.to_i).to eq(interacted_at)
|
||||
end
|
||||
end
|
||||
|
||||
it_behaves_like "it is relayable" do
|
||||
let(:remote_parent) { FactoryGirl.create(:status_message, author: remote_raphael) }
|
||||
let(:local_parent) { local_luke.post(:status_message, text: "hi", to: local_luke.aspects.first) }
|
||||
|
|
|
|||
|
|
@ -5,17 +5,6 @@
|
|||
require "spec_helper"
|
||||
|
||||
shared_examples_for "it is relayable" do
|
||||
describe "interacted_at" do
|
||||
it "sets the interacted at of the parent to the created at of the relayable post" do
|
||||
Timecop.freeze Time.now do
|
||||
relayable.save
|
||||
if relayable.parent.respond_to?(:interacted_at) #I'm sorry.
|
||||
expect(relayable.parent.interacted_at.to_i).to eq(relayable.created_at.to_i)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "validations" do
|
||||
context "author ignored by parent author" do
|
||||
context "the author is on the parent object author's ignore list when object is created" do
|
||||
|
|
|
|||
Loading…
Reference in a new issue