diff options
author | pluralcafe-docker <docker@plural.cafe> | 2018-08-20 02:29:25 +0000 |
---|---|---|
committer | pluralcafe-docker <docker@plural.cafe> | 2018-08-20 02:29:25 +0000 |
commit | c339d49d82b3fd2873831029d9c92b3fbf1236e3 (patch) | |
tree | 5a8528475f089f1e592dfbedd37ee91e6f748ffc /app/controllers/remote_interaction_controller.rb | |
parent | b6e9537de469a178ce195b75fe8eaf03735e785a (diff) | |
parent | f4d28ccfa3f9fd38a6d219fcde2d1a8bfcf6b306 (diff) |
Merge branch 'glitch'
Diffstat (limited to 'app/controllers/remote_interaction_controller.rb')
-rw-r--r-- | app/controllers/remote_interaction_controller.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb new file mode 100644 index 000000000..6861f3f21 --- /dev/null +++ b/app/controllers/remote_interaction_controller.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +class RemoteInteractionController < ApplicationController + include Authorization + + layout 'modal' + + before_action :set_status + before_action :set_body_classes + before_action :set_pack + + def new + @remote_follow = RemoteFollow.new(session_params) + end + + def create + @remote_follow = RemoteFollow.new(resource_params) + + if @remote_follow.valid? + session[:remote_follow] = @remote_follow.acct + redirect_to @remote_follow.interact_address_for(@status) + else + render :new + end + end + + private + + def resource_params + params.require(:remote_follow).permit(:acct) + end + + def session_params + { acct: session[:remote_follow] } + end + + def set_status + @status = Status.find(params[:id]) + authorize @status, :show? + rescue Mastodon::NotPermittedError + # Reraise in order to get a 404 + raise ActiveRecord::RecordNotFound + end + + def set_body_classes + @body_classes = 'modal-layout' + @hide_header = true + end + + def set_pack + use_pack 'modal' + end +end |