From a4d1ad160c76d79227e8bf7e33637084abd31bec Mon Sep 17 00:00:00 2001 From: Benjamin Neff Date: Wed, 16 Aug 2017 00:17:21 +0200 Subject: [PATCH] Fix stop ignoring from privacy settings and on mobile Fixes #7541 --- app/controllers/blocks_controller.rb | 13 ++++++++----- app/views/users/privacy_settings.mobile.haml | 4 ++++ spec/controllers/blocks_controller_spec.rb | 17 ++++++++++++++++- 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/app/controllers/blocks_controller.rb b/app/controllers/blocks_controller.rb index aa8f43cbb..38da40d14 100644 --- a/app/controllers/blocks_controller.rb +++ b/app/controllers/blocks_controller.rb @@ -1,23 +1,26 @@ class BlocksController < ApplicationController before_action :authenticate_user! - respond_to :json - def create block = current_user.blocks.new(block_params) disconnect_if_contact(block.person) if block.save - respond_with do |format| + respond_to do |format| format.json { head :no_content } end end def destroy - current_user.blocks.find(params[:id]).delete + notice = if current_user.blocks.find(params[:id]).delete + {notice: t("blocks.destroy.success")} + else + {error: t("blocks.destroy.failure")} + end - respond_with do |format| + respond_to do |format| format.json { head :no_content } + format.any { redirect_back notice.merge(fallback_location: privacy_settings_path) } end end diff --git a/app/views/users/privacy_settings.mobile.haml b/app/views/users/privacy_settings.mobile.haml index e37698db9..d4cca2637 100644 --- a/app/views/users/privacy_settings.mobile.haml +++ b/app/views/users/privacy_settings.mobile.haml @@ -2,6 +2,10 @@ -# licensed under the Affero General Public License version 3 or later. See -# the COPYRIGHT file. +- flash.each do |name, msg| + .alert{class: "alert-#{flash_class name}", role: "alert"} + = msg + - content_for :page_title do = t(".title") diff --git a/spec/controllers/blocks_controller_spec.rb b/spec/controllers/blocks_controller_spec.rb index 93970e892..31da9a9f6 100644 --- a/spec/controllers/blocks_controller_spec.rb +++ b/spec/controllers/blocks_controller_spec.rb @@ -26,11 +26,26 @@ describe BlocksController, :type => :controller do @block = alice.blocks.create(:person => eve.person) end - it "responds with 204" do + it "redirects back" do + delete :destroy, params: {id: @block.id} + expect(response).to be_redirect + end + + it "notifies the user" do + delete :destroy, params: {id: @block.id} + expect(flash).not_to be_empty + end + + it "responds with 204 with json" do delete :destroy, params: {id: @block.id}, format: :json expect(response.status).to eq(204) end + it "redirects back on mobile" do + delete :destroy, params: {id: @block.id}, format: :mobile + expect(response).to be_redirect + end + it "removes a block" do expect { delete :destroy, params: {id: @block.id}, format: :json