Skip to content
Snippets Groups Projects
Commit cdf7473b authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

Merge branch 'filter_activity' into 'master'

Filter activities

Added filter to activities

See merge request !336
parents 0a75266f dcd47736
No related branches found
No related tags found
No related merge requests found
......@@ -18,13 +18,13 @@ class V1::ActivitiesController < ApplicationController
# Only followers can see user activities
def user_activities
raise ::Pundit::NotAuthorizedError unless ::ActivityPolicy.new(current_user, resource_model).user_activities?
activities = paginate resource_model.activities
activities = paginate resource_model.activities_filtered
render json: activities
end
def me
authorize :activity, :index?
activities = paginate current_user.activities
activities = paginate current_user.activities_filtered
render json: activities
end
end
......@@ -15,7 +15,7 @@ class V1::FeedController < ApplicationController
def activities_followed
activities = []
current_user.watching.each do |watching|
activities.push(*watching.activities.to_a)
activities.push(*watching.activities_filtered.to_a)
end
activities
end
......
module Trackable
extend ActiveSupport::Concern
include PublicActivity::Model
include ActivitiesFilterService
included do
tracked owner: proc { |controller, model| model.try(:user) || model.try(:owner) || controller.try(:current_user) }
tracked recipient: proc { |_controller, model| model.try(:recipient) || model }
tracked privacy: proc { |_controller, model| model.try(:privacy) || "public" }
end
end
......@@ -41,6 +41,7 @@ class User < ApplicationRecord
include Complainable
include Publisher
include PublicActivity::Common
include ActivitiesFilterService
after_create -> { new_activity("create") }
after_update -> { new_activity("update") }
......@@ -177,8 +178,6 @@ class User < ApplicationRecord
# ~~~~ end followable actions ~~~~ #
private
def default_role
roles << Role.teacher
end
......
class ActivityPolicy < ApplicationPolicy
class Scope < Scope
include ActivitiesFilterService
attr_reader :user, :scope
def initialize(user, scope)
......@@ -8,8 +9,9 @@ class ActivityPolicy < ApplicationPolicy
end
def resolve
scope.includes(:owner,:recipient).where("privacy = 'public'").order('created_at DESC').all
scope.includes(:owner,:recipient).where("privacy = 'public'").where.not(key: activities_filter).order('created_at DESC').all
end
end
def index?
......
module ActivitiesFilterService
def activities_filtered
self.activities.where.not(key: activities_filter)
end
def activities_filter
[ 'complaint.update', 'complaint.destroy',
'complaint_reason.create', 'complaint_reason.update', 'complaint_reason.destroy',
'institution.create', 'institution.update', 'institution.destroy',
'review.update', 'review.destroy',
'rate.create', 'rate.update', 'rate.destroy',
'follow.create', 'follow.update', 'follow.destroy',
'share.create', 'share.update', 'share.destroy',
'view.create', 'view.update', 'view.destroy',
'tagging.create', 'tagging.update', 'tagging.destroy',
'bookmark.create', 'bookmark.update', 'bookmark.destroy',
'download.update', 'download.destroy',
'like.update'
]
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment