Sha256: d547e957e3bcd391ab90a8a762fde39a2424e14eff67d2b86e43e3f402ea2df3

Contents?: true

Size: 1.52 KB

Versions: 8

Compression:

Stored size: 1.52 KB

Contents

# frozen_string_literal: true

module Decidim
  class FollowsController < Decidim::ApplicationController
    include FormFactory
    before_action :authenticate_user!
    helper_method :resource, :button_cell, :button_cell_mobile

    def destroy
      @form = form(Decidim::FollowForm).from_params(params)
      enforce_permission_to :delete, :follow, follow: @form.follow

      DeleteFollow.call(@form, current_user) do
        on(:ok) do
          render :update_button
        end

        on(:invalid) do
          render json: { error: I18n.t("follows.destroy.error", scope: "decidim") }, status: :unprocessable_entity
        end
      end
    end

    def create
      @form = form(Decidim::FollowForm).from_params(params)
      enforce_permission_to :create, :follow

      CreateFollow.call(@form, current_user) do
        on(:ok) do
          render :update_button
        end

        on(:invalid) do
          render json: { error: I18n.t("follows.create.error", scope: "decidim") }, status: :unprocessable_entity
        end
      end
    end

    def resource
      @resource ||= GlobalID::Locator.locate_signed(
        params[:follow][:followable_gid]
      )
    end

    def button_options
      params.require(:follow).permit(:button_classes).to_h.symbolize_keys
    end

    def button_cell_mobile
      @button_cell_mobile ||= cell("decidim/follow_button", resource, **button_options.merge(mobile: true))
    end

    def button_cell
      @button_cell ||= cell("decidim/follow_button", resource, **button_options)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
decidim-core-0.28.5 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.4 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.3 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.2 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.1 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.0 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.0.rc5 app/controllers/decidim/follows_controller.rb
decidim-core-0.28.0.rc4 app/controllers/decidim/follows_controller.rb