diaspora/app/controllers/likes_controller.rb
2017-09-17 19:29:15 +02:00

50 lines
1.2 KiB
Ruby

# frozen_string_literal: true
# Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file.
class LikesController < ApplicationController
include ApplicationHelper
before_action :authenticate_user!, except: :index
respond_to :html,
:mobile,
:json
rescue_from Diaspora::NonPublic do
authenticate_user!
end
def create
like = like_service.create(params[:post_id])
rescue ActiveRecord::RecordNotFound, ActiveRecord::RecordInvalid
render plain: I18n.t("likes.create.error"), status: 422
else
respond_to do |format|
format.html { head :created }
format.mobile { redirect_to post_path(like.post_id) }
format.json { render json: like.as_api_response(:backbone), status: 201 }
end
end
def destroy
if like_service.destroy(params[:id])
head :no_content
else
render plain: I18n.t("likes.destroy.error"), status: 404
end
end
def index
render json: like_service.find_for_post(params[:post_id])
.includes(author: :profile)
.as_api_response(:backbone)
end
private
def like_service
@like_service ||= LikeService.new(current_user)
end
end