mirror of
https://github.com/discourse/discourse.git
synced 2025-05-28 13:51:18 +08:00
DEV: Drop WithServiceHelper
This patch removes the `with_service` helper from the code base. Instead, we can pass a block with actions directly to the `.call` method of a service. This simplifies how to use services: - use `.call` without a block to run the service and get its result object. - use `.call` with a block of actions to run the service and execute arbitrary code depending on the service outcome. It also means a service is now “self-contained” and can be used anywhere without having to include a helper or whatever.
This commit is contained in:

committed by
Loïc Guitaut

parent
c76ff5c994
commit
e94707acdf
@ -119,7 +119,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
end
|
||||
|
||||
def suspend
|
||||
with_service(SuspendUser, user: @user) do
|
||||
SuspendUser.call(user: @user) do
|
||||
on_success do
|
||||
render_json_dump(
|
||||
suspension: {
|
||||
@ -131,9 +131,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
},
|
||||
)
|
||||
end
|
||||
|
||||
on_failed_policy(:can_suspend) { raise Discourse::InvalidAccess.new }
|
||||
|
||||
on_failed_policy(:not_suspended_already) do
|
||||
suspend_record = @user.suspend_record
|
||||
message =
|
||||
@ -149,7 +147,6 @@ class Admin::UsersController < Admin::StaffController
|
||||
)
|
||||
render json: failed_json.merge(message: message), status: 409
|
||||
end
|
||||
|
||||
on_failed_contract do |contract|
|
||||
render json: failed_json.merge(errors: contract.errors.full_messages), status: 400
|
||||
end
|
||||
@ -328,7 +325,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
end
|
||||
|
||||
def silence
|
||||
with_service(SilenceUser, user: @user) do
|
||||
SilenceUser.call(user: @user) do
|
||||
on_success do
|
||||
render_json_dump(
|
||||
silence: {
|
||||
@ -340,9 +337,7 @@ class Admin::UsersController < Admin::StaffController
|
||||
},
|
||||
)
|
||||
end
|
||||
|
||||
on_failed_policy(:can_silence) { raise Discourse::InvalidAccess.new }
|
||||
|
||||
on_failed_policy(:not_silenced_already) do
|
||||
silenced_record = @user.silenced_record
|
||||
message =
|
||||
@ -358,7 +353,6 @@ class Admin::UsersController < Admin::StaffController
|
||||
)
|
||||
render json: failed_json.merge(message: message), status: 409
|
||||
end
|
||||
|
||||
on_failed_contract do |contract|
|
||||
render json: failed_json.merge(errors: contract.errors.full_messages), status: 400
|
||||
end
|
||||
|
Reference in New Issue
Block a user