mirror of
https://github.com/Growstuff/growstuff.git
synced 2026-05-19 22:38:55 -04:00
Merge pull request #4183 from Growstuff/feature/timeline-likes
Feature: Display likes on timeline
This commit is contained in:
committed by
GitHub
parent
508ee5260d
commit
0079513b35
@@ -7,6 +7,8 @@ module EventHelper
|
||||
|
||||
def event_description(event)
|
||||
render "#{event.event_type.pluralize}/description", event_model: resolve_model(event)
|
||||
rescue ActionView::MissingTemplate
|
||||
"#{event.event_type.humanize.downcase}d"
|
||||
end
|
||||
|
||||
def resolve_model(event)
|
||||
|
||||
@@ -18,10 +18,20 @@ class TimelineService
|
||||
.union_all(photos_query)
|
||||
.union_all(seeds_query)
|
||||
.union_all(activities_query)
|
||||
.union_all(likes_query)
|
||||
.where.not(event_at: nil)
|
||||
.order(event_at: :desc)
|
||||
end
|
||||
|
||||
def self.likes_query
|
||||
Like
|
||||
.select("likes.id",
|
||||
"'like' as event_type",
|
||||
"likes.created_at as event_at",
|
||||
"likes.member_id as owner_id",
|
||||
"null as crop_id")
|
||||
end
|
||||
|
||||
def self.activities_query
|
||||
Activity.select(
|
||||
:id,
|
||||
|
||||
1
app/views/likes/_description.html.haml
Normal file
1
app/views/likes/_description.html.haml
Normal file
@@ -0,0 +1 @@
|
||||
#{link_to event_model.member, event_model.member} liked #{link_to event_model.likeable.class.name.downcase, event_model.likeable}
|
||||
2
app/views/timeline/_like.html.haml
Normal file
2
app/views/timeline/_like.html.haml
Normal file
@@ -0,0 +1,2 @@
|
||||
- likeable = like.likeable
|
||||
= render "timeline/likeables/#{likeable.class.name.downcase}", likeable: likeable
|
||||
@@ -14,6 +14,7 @@
|
||||
= link_to owner, owner
|
||||
= event_description(event)
|
||||
= render 'timeline/photos', photo: resolve_model(event) if event.event_type == 'photo'
|
||||
= render 'timeline/like', like: resolve_model(event) if event.event_type == 'like'
|
||||
%small
|
||||
- if event.event_at.present?
|
||||
- if event.event_at.kind_of?(Date)
|
||||
|
||||
1
app/views/timeline/likeables/_photo.html.haml
Normal file
1
app/views/timeline/likeables/_photo.html.haml
Normal file
@@ -0,0 +1 @@
|
||||
= render 'timeline/photos', photo: likeable
|
||||
6
app/views/timeline/likeables/_post.html.haml
Normal file
6
app/views/timeline/likeables/_post.html.haml
Normal file
@@ -0,0 +1,6 @@
|
||||
.card.my-2
|
||||
.card-body
|
||||
%blockquote.blockquote.mb-0
|
||||
%p= truncate(likeable.body, length: 140)
|
||||
%footer.blockquote-footer
|
||||
= link_to "view post", likeable
|
||||
@@ -17,6 +17,10 @@ describe "timeline", :js do
|
||||
let!(:friend_harvest) { FactoryBot.create(:planting, owner: friend2, planted_at: 3.years.ago) }
|
||||
let!(:finished_planting) { FactoryBot.create(:finished_planting, owner: friend1) }
|
||||
let!(:no_planted_at_planting) { FactoryBot.create(:planting, owner: friend2, planted_at: nil) }
|
||||
let!(:friend_photo) { FactoryBot.create(:photo, owner: friend1) }
|
||||
let!(:friend_post) { FactoryBot.create(:post, author: friend2) }
|
||||
let!(:liked_post) { FactoryBot.create(:like, likeable: friend_photo, member: friend2) }
|
||||
let!(:liked_photo) { FactoryBot.create(:like, likeable: friend_post, member: friend1) }
|
||||
|
||||
before do
|
||||
login_as(member)
|
||||
@@ -28,6 +32,8 @@ describe "timeline", :js do
|
||||
it { expect(page).to have_link href: planting_path(friend_harvest) }
|
||||
it { expect(page).to have_link href: planting_path(finished_planting) }
|
||||
it { expect(page).to have_no_link href: planting_path(no_planted_at_planting) }
|
||||
it { expect(page).to have_link href: photo_path(friend_photo) }
|
||||
it { expect(page).to have_link href: post_path(friend_post) }
|
||||
end
|
||||
|
||||
describe 'shows the friends you follow' do
|
||||
|
||||
Reference in New Issue
Block a user