diff options
Diffstat (limited to 'app/controllers')
-rw-r--r-- | app/controllers/remote_follow_controller.rb | 14 | ||||
-rw-r--r-- | app/controllers/remote_interaction_controller.rb | 38 |
2 files changed, 25 insertions, 27 deletions
diff --git a/app/controllers/remote_follow_controller.rb b/app/controllers/remote_follow_controller.rb index 17bc1940a..dc15e63bf 100644 --- a/app/controllers/remote_follow_controller.rb +++ b/app/controllers/remote_follow_controller.rb @@ -9,18 +9,10 @@ class RemoteFollowController < ApplicationController before_action :set_body_classes def new - @remote_follow = RemoteFollow.new(session_params) - end - - def create - @remote_follow = RemoteFollow.new(resource_params) + raise Mastodon::NotPermittedError unless user_signed_in? - if @remote_follow.valid? - session[:remote_follow] = @remote_follow.acct - redirect_to @remote_follow.subscribe_address_for(@account) - else - render :new - end + FollowService.new.call(current_account, @account) + redirect_to TagManager.instance.url_for(@account) end private diff --git a/app/controllers/remote_interaction_controller.rb b/app/controllers/remote_interaction_controller.rb index d7197d434..b1b304055 100644 --- a/app/controllers/remote_interaction_controller.rb +++ b/app/controllers/remote_interaction_controller.rb @@ -5,24 +5,34 @@ class RemoteInteractionController < ApplicationController layout 'modal' - before_action :set_interaction_type - before_action :set_status before_action :set_body_classes before_action :set_pack + before_action :set_status def new - @remote_follow = RemoteFollow.new(session_params) - end - - def create - @remote_follow = RemoteFollow.new(resource_params) + raise Mastodon::NotPermittedError unless user_signed_in? - if @remote_follow.valid? - session[:remote_follow] = @remote_follow.acct - redirect_to @remote_follow.interact_address_for(@status) - else - render :new + case params[:type] + when 'reblog' + if current_account.statuses.where(reblog: @status).exists? + status = current_account.statuses.find_by(reblog: @status) + RemoveStatusService.new.call(status) + else + ReblogService.new.call(current_account, @status) + end + when 'favourite' + if Favourite.where(account: current_account, status: @status).exists? + UnfavouriteService.new.call(current_account, @status) + else + FavouriteService.new.call(current_account, @status) + end + when 'follow' + FollowService.new.call(current_account, @status.account) + when 'unfollow' + UnfollowService.new.call(current_account, @status.account) end + + redirect_to TagManager.instance.url_for(@status) end private @@ -51,8 +61,4 @@ class RemoteInteractionController < ApplicationController def set_pack use_pack 'modal' end - - def set_interaction_type - @interaction_type = %w(reply reblog favourite).include?(params[:type]) ? params[:type] : 'reply' - end end |