featured_tags_controller.rb 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. # frozen_string_literal: true
  2. class Settings::FeaturedTagsController < Settings::BaseController
  3. before_action :set_featured_tags, only: :index
  4. before_action :set_featured_tag, except: [:index, :create]
  5. before_action :set_recently_used_tags, only: :index
  6. def index
  7. @featured_tag = FeaturedTag.new
  8. end
  9. def create
  10. @featured_tag = CreateFeaturedTagService.new.call(current_account, featured_tag_params[:name], force: false)
  11. if @featured_tag.valid?
  12. redirect_to settings_featured_tags_path
  13. else
  14. set_featured_tags
  15. set_recently_used_tags
  16. render :index
  17. end
  18. end
  19. def destroy
  20. RemoveFeaturedTagService.new.call(current_account, @featured_tag)
  21. redirect_to settings_featured_tags_path
  22. end
  23. private
  24. def set_featured_tag
  25. @featured_tag = current_account.featured_tags.find(params[:id])
  26. end
  27. def set_featured_tags
  28. @featured_tags = current_account.featured_tags.order(statuses_count: :desc).reject(&:new_record?)
  29. end
  30. def set_recently_used_tags
  31. @recently_used_tags = Tag.recently_used(current_account).where.not(id: @featured_tags.map(&:id)).limit(10)
  32. end
  33. def featured_tag_params
  34. params.require(:featured_tag).permit(:name)
  35. end
  36. end