Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion app/controllers/api/v2/campaign_actions_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def merge_additional_fields(model)

def get_campaign_action_causes(action_id)
CampaignAction.find(action_id)&.causes.map do |cac|
cac.serializable_hash.symbolize_keys.merge({joined: get_status(cac.id, request)})
cac.serializable_hash.symbolize_keys.merge({joined: get_status(cac.id, request, user)})
end
end
end
2 changes: 1 addition & 1 deletion app/controllers/api/v2/campaigns_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def merge_additional_fields(model)

def get_campaign_causes(campaign)
campaign.causes.map do |cc|
cc.serializable_hash.symbolize_keys.merge({joined: get_status(cc.id, request)})
cc.serializable_hash.symbolize_keys.merge({joined: get_status(cc.id, request, user)})
end
end
end
23 changes: 2 additions & 21 deletions app/controllers/api/v2/causes_controller.rb
Original file line number Diff line number Diff line change
@@ -1,30 +1,11 @@
# frozen_string_literal: true
include ::V2::Progress::UserProgress

class Api::V2::CausesController < APIApplicationController
def index
render json: { data: causes_data }, status: :ok
render json: Cause.all, root: :data, status: :ok, adapter: :json, request: request, user: user, each_serializer: V2::CauseSerializer
end

def show
render json: { data: cause_data }, status: :ok
end

private

def causes_data
Cause.all.map do |a|
a.serializable_hash.symbolize_keys.merge(additional_fields(a.id))
end
end

def cause_data
Cause.find(params[:id]).serializable_hash.symbolize_keys.merge(additional_fields(params[:id]))
end

def additional_fields(cause_id)
{
joined: get_status(cause_id, request)
}
render json: Cause.find(params[:id]), root: :data, status: :ok, adapter: :json, request: request, user: user, serializer: V2::CauseSerializer
end
end
2 changes: 1 addition & 1 deletion app/controllers/api/v2/learning_resources_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ def merge_additional_fields(model)

def get_learning_resource_causes(learning_resource_id)
LearningResource.find(learning_resource_id)&.causes.map do |lrc|
lrc.serializable_hash.symbolize_keys.merge({joined: get_status(lrc.id, request)})
lrc.serializable_hash.symbolize_keys.merge({joined: get_status(lrc.id, request, user)})
end
end
end
11 changes: 11 additions & 0 deletions app/serializers/v2/cause_serializer.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# frozen_string_literal: true

include ::V2::Progress::UserProgress

class V2::CauseSerializer < ActiveModel::Serializer
attributes :id, :image, :icon, :name, :description, :joiners, :created_at, :updated_at, :joined

def joined
get_status(object.id, @instance_options[:request], @instance_options[:user])
end
end
2 changes: 1 addition & 1 deletion app/services/v2/progress/user_progress.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
module V2
module Progress
module UserProgress
def get_status(cause_id, request)
def get_status(cause_id, request, user)
return 'Authentication failed' unless request.headers['token'] && user

user.joined_cause?(cause_id.to_i)
Expand Down