diff options
author | ThibG <thib@sitedethib.com> | 2018-08-18 18:22:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-18 18:22:54 +0200 |
commit | 44e31c3e531e5c206003b7ed83ee1d6fdd3b2b53 (patch) | |
tree | e9d1366c30b94df21ec767276fbde175428399fb /app/controllers/remote_interaction_controller.rb | |
parent | 7423c0c1308555db3072ae64141250fdd33ce235 (diff) | |
parent | bfeac6747a58b660f0d1b3766c7cfb3ea2655fce (diff) |
Merge pull request #649 from ThibG/glitch-soc/merge-upstream
Merge upstream changes
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 |