diff options
author | Thibaut Girka <thib@sitedethib.com> | 2018-08-18 18:04:49 +0200 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2018-08-18 18:04:49 +0200 |
commit | bfeac6747a58b660f0d1b3766c7cfb3ea2655fce (patch) | |
tree | e9d1366c30b94df21ec767276fbde175428399fb /app/controllers/remote_interaction_controller.rb | |
parent | 7423c0c1308555db3072ae64141250fdd33ce235 (diff) | |
parent | 298ee84488758fc08a0ae9233e04c9637aa2fe02 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: .circleci/config.yml app/controllers/authorize_follows_controller.rb app/javascript/packs/public.js Moved new stuff from packs/public.js to core/public.js. Added appropriate use_pack in new controllers.
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 |