handle passing `0` to `lifespan` & `defed_in` bangtags to unset the auto-destruct/auto-defederate flag for a post
parent
f49ff8fccc
commit
d8b87ec487
|
@ -762,19 +762,19 @@ class Bangtags
|
|||
unit = cmd[2].present? ? cmd[2].downcase : 'minutes'
|
||||
end
|
||||
defederate_after = case unit
|
||||
when 'm', 'min', 'mins', 'minute', 'minutes'
|
||||
i.minutes
|
||||
when 'h', 'hr', 'hrs', 'hour', 'hours'
|
||||
i.hours
|
||||
when 'd', 'dy', 'dys', 'day', 'days'
|
||||
i.days
|
||||
when 'w', 'wk', 'wks', 'week', 'weeks'
|
||||
i.weeks
|
||||
when 'mn', 'mns', 'month', 'months'
|
||||
i.months
|
||||
when 'y', 'yr', 'yrs', 'year', 'years'
|
||||
i.years
|
||||
end
|
||||
when 'm', 'min', 'mins', 'minute', 'minutes'
|
||||
i.minutes
|
||||
when 'h', 'hr', 'hrs', 'hour', 'hours'
|
||||
i.hours
|
||||
when 'd', 'dy', 'dys', 'day', 'days'
|
||||
i.days
|
||||
when 'w', 'wk', 'wks', 'week', 'weeks'
|
||||
i.weeks
|
||||
when 'mn', 'mns', 'month', 'months'
|
||||
i.months
|
||||
when 'y', 'yr', 'yrs', 'year', 'years'
|
||||
i.years
|
||||
end
|
||||
if s == :thread
|
||||
@parent_status.conversation.statuses.where(account_id: @account.id).find_each do |s|
|
||||
s.defederate_after = defederate_after
|
||||
|
|
|
@ -285,15 +285,25 @@ class Status < ApplicationRecord
|
|||
end
|
||||
|
||||
def delete_after=(value)
|
||||
@no_clobber_expirations = true
|
||||
|
||||
if value.to_i == 0
|
||||
DestructingStatus.where(status_id: id).destroy_all
|
||||
return
|
||||
end
|
||||
|
||||
if defederate_after && defederate_after < (Time.now.utc + 5.minutes + value)
|
||||
value = 5.minutes + value
|
||||
end
|
||||
|
||||
delete_after = Time.now.utc + value
|
||||
if destructing_status.nil?
|
||||
DestructingStatus.create!(status_id: id, delete_after: Time.now.utc + value)
|
||||
DestructingStatus.create!(status_id: id, delete_after: delete_after)
|
||||
else
|
||||
destructing_status.update(delete_after: Time.now.utc + value)
|
||||
destructing_status.update(delete_after: delete_after)
|
||||
end
|
||||
|
||||
delete_after
|
||||
end
|
||||
|
||||
def defederate_after
|
||||
|
@ -301,13 +311,27 @@ class Status < ApplicationRecord
|
|||
end
|
||||
|
||||
def defederate_after=(value)
|
||||
@no_clobber_expirations = true
|
||||
|
||||
if value.to_i == 0
|
||||
DefederatingStatus.where(status_id: id).destroy_all
|
||||
return
|
||||
end
|
||||
|
||||
return unless delete_after.nil? || delete_after >= (Time.now.utc + 5.minutes + value)
|
||||
|
||||
defederate_after = Time.now.utc + value
|
||||
if defederating_status.nil?
|
||||
DefederatingStatus.create!(status_id: id, defederate_after: Time.now.utc + value)
|
||||
DefederatingStatus.create!(status_id: id, defederate_after: defederate_after)
|
||||
else
|
||||
defederating_status.update(defederate_after: Time.now.utc + value)
|
||||
defederating_status.update(defederate_after: defederate_after)
|
||||
end
|
||||
|
||||
defederate_after
|
||||
end
|
||||
|
||||
def no_clobber_expirations?
|
||||
@no_clobber_expirations || false
|
||||
end
|
||||
|
||||
def mark_for_mass_destruction!
|
||||
|
|
|
@ -279,6 +279,7 @@ class PostStatusService < BaseService
|
|||
end
|
||||
|
||||
def set_expirations
|
||||
return if @status.no_clobber_expirations?
|
||||
@status.delete_after = @delete_after if @delete_after && @status.delete_after.nil?
|
||||
@status.defederate_after = @defederate_after if @defederate_after && @status.defederate_after.nil?
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue