diff options
author | Thibaut Girka <thib@sitedethib.com> | 2019-03-16 13:52:55 +0100 |
---|---|---|
committer | Thibaut Girka <thib@sitedethib.com> | 2019-03-16 14:14:20 +0100 |
commit | 4df3b7cb067797982199c3e613ba32a9c7474348 (patch) | |
tree | bf237d385411f73e670af4c744d8239ab4799434 /app/controllers/relationships_controller.rb | |
parent | c2fa0f7c40bcc4064e8baaa221665eadd391c001 (diff) | |
parent | 1a0d3c9c65d663210494ec9b55912debad6331f5 (diff) |
Merge branch 'master' into glitch-soc/merge-upstream
Conflicts: - app/controllers/settings/follower_domains_controller.rb Removed upstream. Did the same here. Maybe we should not have? - config/locales/en.yml Upstream removed the “Authorized followers” page and associated translations. This is too close in the file to our glitch-soc-specific “flavour” string. No actual conflict. - config/locales/ja.yml Same as above. - config/locales/pl.yml Same as above. - config/navigation.rb No real conflict. New route added too close to the glitch-soc-specific “flavours” one. - config/webpack/configuration.js Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up. - config/webpack/loaders/babel.js Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up. The contents of this file have been moved to package.json. - config/webpack/shared.js Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up. - config/webpacker.yml Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up. - jest.config.js The contents of this file have been moved to package.json. - package.json Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up. - yarn.lock Upstream refactored the webpack(er) configuration quite a bit. Tried to keep up.
Diffstat (limited to 'app/controllers/relationships_controller.rb')
-rw-r--r-- | app/controllers/relationships_controller.rb | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/app/controllers/relationships_controller.rb b/app/controllers/relationships_controller.rb new file mode 100644 index 000000000..e6dd65e44 --- /dev/null +++ b/app/controllers/relationships_controller.rb @@ -0,0 +1,98 @@ +# frozen_string_literal: true + +class RelationshipsController < ApplicationController + layout 'admin' + + before_action :authenticate_user! + before_action :set_accounts, only: :show + before_action :set_body_classes + + helper_method :following_relationship?, :followed_by_relationship?, :mutual_relationship? + + def show + @form = Form::AccountBatch.new + end + + def update + @form = Form::AccountBatch.new(form_account_batch_params.merge(current_account: current_account, action: action_from_button)) + @form.save + rescue ActionController::ParameterMissing + # Do nothing + ensure + redirect_to relationships_path(current_params) + end + + private + + def set_accounts + @accounts = relationships_scope.page(params[:page]).per(40) + end + + def relationships_scope + scope = begin + if following_relationship? + current_account.following.includes(:account_stat) + else + current_account.followers.includes(:account_stat) + end + end + + scope.merge!(Follow.recent) + scope.merge!(mutual_relationship_scope) if mutual_relationship? + scope.merge!(abandoned_account_scope) if params[:status] == 'abandoned' + scope.merge!(active_account_scope) if params[:status] == 'active' + scope.merge!(by_domain_scope) if params[:by_domain].present? + + scope + end + + def mutual_relationship_scope + Account.where(id: current_account.following) + end + + def abandoned_account_scope + Account.where.not(moved_to_account_id: nil) + end + + def active_account_scope + Account.where(moved_to_account_id: nil) + end + + def by_domain_scope + Account.where(domain: params[:by_domain]) + end + + def form_account_batch_params + params.require(:form_account_batch).permit(:action, account_ids: []) + end + + def following_relationship? + params[:relationship].blank? || params[:relationship] == 'following' + end + + def mutual_relationship? + params[:relationship] == 'mutual' + end + + def followed_by_relationship? + params[:relationship] == 'followed_by' + end + + def current_params + params.slice(:page, :status, :relationship, :by_domain).permit(:page, :status, :relationship, :by_domain) + end + + def action_from_button + if params[:unfollow] + 'unfollow' + elsif params[:remove_from_followers] + 'remove_from_followers' + elsif params[:block_domains] + 'block_domains' + end + end + + def set_body_classes + @body_classes = 'admin' + end +end |