Add deactivates_at date to user blocks

Block deactivation dates that take needs_view-block views into account were derived using updated_at. This was possible because inactive blocks couldn't be edited and their updated_at date wouldn't change. With editing of inactive blocks enabled deactivation date needs to be saved explicitly.
This commit is contained in:
Anton Khorev 2024-08-13 13:57:31 +03:00
parent 41b81bd393
commit cff4c63713
8 changed files with 165 additions and 15 deletions

View file

@ -26,6 +26,7 @@ class UserBlocksController < ApplicationController
def show
if current_user && current_user == @user_block.user
@user_block.needs_view = false
@user_block.deactivates_at = [@user_block.ends_at, Time.now.utc].max
@user_block.save!
end
end
@ -49,6 +50,7 @@ class UserBlocksController < ApplicationController
:ends_at => now + @block_period.hours,
:needs_view => params[:user_block][:needs_view]
)
@user_block.deactivates_at = @user_block.ends_at unless @user_block.needs_view
if @user_block.save
flash[:notice] = t(".flash", :name => @user.display_name)
@ -72,11 +74,16 @@ class UserBlocksController < ApplicationController
@user_block.reason = params[:user_block][:reason]
@user_block.needs_view = params[:user_block][:needs_view]
@user_block.ends_at = Time.now.utc + @block_period.hours
@user_block.deactivates_at = (@user_block.ends_at unless @user_block.needs_view)
if !user_block_was_active && @user_block.active?
flash.now[:error] = t(".inactive_block_cannot_be_reactivated")
render :action => "edit"
else
@user_block.ends_at = @user_block.ends_at_was unless user_block_was_active
unless user_block_was_active
@user_block.ends_at = @user_block.ends_at_was
@user_block.deactivates_at = @user_block.deactivates_at_was
@user_block.deactivates_at = [@user_block.ends_at, @user_block.updated_at].max unless @user_block.deactivates_at # take updated_at into account before deactivates_at is backfilled
end
if @user_block.save
flash[:notice] = t(".success")
redirect_to @user_block