logo

mastofe

My custom branche(s) on git.pleroma.social/pleroma/mastofe git clone https://hacktivis.me/git/mastofe.git

tags_controller.rb (1438B)


  1. # frozen_string_literal: true
  2. class TagsController < ApplicationController
  3. before_action :set_body_classes
  4. before_action :set_instance_presenter
  5. def show
  6. @tag = Tag.find_by!(name: params[:id].downcase)
  7. respond_to do |format|
  8. format.html do
  9. serializable_resource = ActiveModelSerializers::SerializableResource.new(InitialStatePresenter.new(initial_state_params), serializer: InitialStateSerializer)
  10. @initial_state_json = serializable_resource.to_json
  11. end
  12. format.json do
  13. @statuses = Status.as_tag_timeline(@tag, current_account, params[:local]).paginate_by_max_id(20, params[:max_id])
  14. @statuses = cache_collection(@statuses, Status)
  15. render json: collection_presenter,
  16. serializer: ActivityPub::CollectionSerializer,
  17. adapter: ActivityPub::Adapter,
  18. content_type: 'application/activity+json'
  19. end
  20. end
  21. end
  22. private
  23. def set_body_classes
  24. @body_classes = 'tag-body'
  25. end
  26. def set_instance_presenter
  27. @instance_presenter = InstancePresenter.new
  28. end
  29. def collection_presenter
  30. ActivityPub::CollectionPresenter.new(
  31. id: tag_url(@tag),
  32. type: :ordered,
  33. size: @tag.statuses.count,
  34. items: @statuses.map { |s| ActivityPub::TagManager.instance.uri_for(s) }
  35. )
  36. end
  37. def initial_state_params
  38. {
  39. settings: {},
  40. token: current_session&.token,
  41. }
  42. end
  43. end