avoid posting when body only has mentions it
parent
5cf03910f7
commit
1633268293
|
@ -1001,7 +1001,7 @@ class Bangtags
|
|||
text.strip!
|
||||
text = text.split("\n").map { |chunk| chunk.strip }.join("\n") if @strip_lines
|
||||
|
||||
if text.blank?
|
||||
if text.blank? || has_only_mentions?(text)
|
||||
RemoveStatusService.new.call(@status)
|
||||
else
|
||||
status.text = text
|
||||
|
@ -1090,6 +1090,10 @@ class Bangtags
|
|||
end
|
||||
end
|
||||
|
||||
def has_only_mentions?(text)
|
||||
text.match?(/^(?:\s*@((#{Account::USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?))+$/i)
|
||||
end
|
||||
|
||||
def add_tags(to_status, *tags)
|
||||
valid_name = /^[[:word:]:._\-]*[[:alpha:]:._·\-][[:word:]:._\-]*$/
|
||||
tags = tags.select {|t| t.present? && valid_name.match?(t)}.uniq
|
||||
|
|
|
@ -55,6 +55,7 @@ class PostStatusService < BaseService
|
|||
|
||||
raise Mastodon::LengthValidationError, I18n.t('statuses.replies_rejected') if recipient_rejects_replies?
|
||||
raise Mastodon::LengthValidationError, I18n.t('statuses.kicked') if kicked?
|
||||
raise Mastodon::LengthValidationError, I18n.t('statuses.no_body') if has_only_mentions?
|
||||
|
||||
return idempotency_duplicate if idempotency_given? && idempotency_duplicate?
|
||||
|
||||
|
@ -98,6 +99,10 @@ class PostStatusService < BaseService
|
|||
@in_reply_to.present? && ConversationKick.where(account_id: @account.id, conversation_id: @in_reply_to.conversation_id).exists?
|
||||
end
|
||||
|
||||
def has_only_mentions?
|
||||
@options[:nomentions].blank? && @text.match?(/^(?:\s*@((#{Account::USERNAME_RE})(?:@[a-z0-9\.\-]+[a-z0-9]+)?))+$/i)
|
||||
end
|
||||
|
||||
def mark_recipient_known
|
||||
@in_reply_to.account.mark_known! unless !Setting.auto_mark_known || @in_reply_to.account.known?
|
||||
end
|
||||
|
|
|
@ -976,6 +976,7 @@ en:
|
|||
vote: Vote
|
||||
replies_rejected: 'The author is not accepting replies to this roar.'
|
||||
kicked: "You do not have the author's permission to reply to this thread."
|
||||
no_body: "Your post has mentions without any body text."
|
||||
show_more: Show more
|
||||
sign_in_to_participate: Sign in to participate in the conversation
|
||||
title: '%{name}: "%{quote}"'
|
||||
|
|
Loading…
Reference in New Issue