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

Merge branch 'show-all-activities' into 'master'

Show all activities

Changed activities index to show all activities. Created activities/me route. Added privacy to activities

See merge request !330
parents 552cbe55 81f42813
No related branches found
No related tags found
No related merge requests found
......@@ -8,7 +8,7 @@ class V1::ActivitiesController < ApplicationController
# Render all activities that logged user can see
def index
authorize :activity, :index?
activities = paginate current_user.activities
activities = paginate ::ActivityPolicy::Scope.new(current_user, ::PublicActivity::Activity).resolve
render json: activities
end
......@@ -21,4 +21,10 @@ class V1::ActivitiesController < ApplicationController
activities = paginate resource_model.activities
render json: activities
end
def me
authorize :activity, :index?
activities = paginate current_user.activities
render json: activities
end
end
......@@ -5,5 +5,6 @@ module Trackable
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
......@@ -40,6 +40,10 @@ class User < ApplicationRecord
include Tagger
include Complainable
include Publisher
include PublicActivity::Common
after_create -> { new_activity("create") }
after_update -> { new_activity("update") }
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
......@@ -193,4 +197,14 @@ class User < ApplicationRecord
password: Devise.friendly_token[0, 20]
)
end
def new_activity(type)
should_create = true
if type == "update"
ignore = ["tokens", "sign_in_count", "current_sign_in_at", "last_sign_in_at", "updated_at"]
filtered = changed.reject { |x| ignore.include?(x) }
should_create = !filtered.empty?
end
self.create_activity key: 'user.'+type, trackable: self, owner: self, recipient: self, privacy: "public" if should_create
end
end
......@@ -8,12 +8,7 @@ class ActivityPolicy < ApplicationPolicy
end
def resolve
raise StandardError, 'The user must be set.' if user.blank?
if user.is_admin?
scope.includes(:owner).order('created_at DESC').all
else
user.activities
end
scope.includes(:owner,:recipient).where("privacy = 'public'").order('created_at DESC').all
end
end
......
......@@ -8,8 +8,8 @@ class PublicActivity::ActivitySerializer < ActiveModel::Serializer
end
cache key: 'activity', expires_in: 24.hours
attributes :id, :trackable_type, :activity, :recipient_type, :parameters, :created_at
attributes :id, :trackable_type, :activity, :privacy, :recipient_type, :parameters, :created_at
has_one :owner
has_one :recipient
has_one :trackable
......
......@@ -126,6 +126,6 @@ Rails.application.routes.draw do
post '/package', to: 'packages#link'
get '/subjects', to: 'subjects#index'
get '/educational_stages', to: 'educational_stages#index'
get '/activities/me', to: 'activities#me'
end
end
class AddPrivacyToActivities < ActiveRecord::Migration[5.0]
def change
add_column :activities, :privacy, :string
add_index :activities, :privacy
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