From 004382e4d09f90e5ca824996c4b20e99599bf98f Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 26 Dec 2016 19:30:45 +0100 Subject: Adding follow requests API --- .../api/v1/follow_requests_controller.rb | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/controllers/api/v1/follow_requests_controller.rb (limited to 'app/controllers/api/v1') diff --git a/app/controllers/api/v1/follow_requests_controller.rb b/app/controllers/api/v1/follow_requests_controller.rb new file mode 100644 index 000000000..a30e97e71 --- /dev/null +++ b/app/controllers/api/v1/follow_requests_controller.rb @@ -0,0 +1,29 @@ +# frozen_string_literal: true + +class Api::V1::FollowRequestsController < ApiController + before_action -> { doorkeeper_authorize! :follow } + before_action :require_user! + + def index + results = FollowRequest.where(target_account: current_account).paginate_by_max_id(DEFAULT_ACCOUNTS_LIMIT, params[:max_id], params[:since_id]) + accounts = Account.where(id: results.map(&:account_id)).map { |a| [a.id, a] }.to_h + @accounts = results.map { |f| accounts[f.account_id] } + + set_account_counters_maps(@accounts) + + next_path = api_v1_follow_requests_url(max_id: results.last.id) if results.size == DEFAULT_ACCOUNTS_LIMIT + prev_path = api_v1_follow_requests_url(since_id: results.first.id) unless results.empty? + + set_pagination_headers(next_path, prev_path) + end + + def authorize + FollowRequest.find_by!(account_id: params[:id], target_account: current_account).authorize! + render_empty + end + + def reject + FollowRequest.find_by!(account_id: params[:id], target_account: current_account).reject! + render_empty + end +end -- cgit From 2146ac91a004bad2a6c4dc1d01599a85515928f5 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 26 Dec 2016 21:52:03 +0100 Subject: Follow requests send e-mail notifications, but are excluded from notifications API Better initial state for unlisted/nsfw toggles --- .../features/compose/components/compose_form.jsx | 5 +++-- .../follow_requests/components/account_authorize.jsx | 2 +- app/controllers/api/v1/notifications_controller.rb | 2 +- app/mailers/notification_mailer.rb | 9 +++++++++ app/models/follow_request.rb | 2 ++ app/models/notification.rb | 18 ++++++++++++------ app/models/user.rb | 2 +- app/services/follow_service.rb | 7 ++++++- app/services/notify_service.rb | 5 +++++ app/views/notification_mailer/follow_request.text.erb | 5 +++++ config/locales/en.yml | 3 +++ 11 files changed, 48 insertions(+), 12 deletions(-) create mode 100644 app/views/notification_mailer/follow_request.text.erb (limited to 'app/controllers/api/v1') diff --git a/app/assets/javascripts/components/features/compose/components/compose_form.jsx b/app/assets/javascripts/components/features/compose/components/compose_form.jsx index 760b0efd1..012e39c91 100644 --- a/app/assets/javascripts/components/features/compose/components/compose_form.jsx +++ b/app/assets/javascripts/components/features/compose/components/compose_form.jsx @@ -20,6 +20,7 @@ const messages = defineMessages({ const ComposeForm = React.createClass({ propTypes: { + intl: React.PropTypes.object.isRequired, text: React.PropTypes.string.isRequired, suggestion_token: React.PropTypes.string, suggestions: ImmutablePropTypes.list, @@ -129,7 +130,7 @@ const ComposeForm = React.createClass({ - + {({ opacity, height }) => - + {({ opacity, height }) =>