* Add: `conversations`テーブルに`ancestor_status`プロパティ * Fix test * Fix test more * Add: `limited_visibility`に`Reply`を追加、`context`のURI * Add: 外部からの`context`受信処理 * Fix test * Add: 公開範囲「返信」 * Fix test * Fix: 返信に返信以外の公開範囲を設定できない問題 * Add: ローカル投稿時にメンション追加・他サーバーへの転送 * Fix test * Fix test * Test: ローカルスレッドへの返信投稿の転送 * Test: 未知のアカウントからのメンション * Add: 編集・削除の連合に対応 * Remove: 重複テスト * Fix: 改善 * Add: 編集削除の転送処理・返信なのにsilentなメンションでの通知 * Fix: リプライが第三者に届かない問題 * Add: `always_sign_unsafe` * Add: Subject * Remove space * Fix: 他人のスレッドの送信先一覧を非表示 * Fix: おかしいコード
This commit is contained in:
parent
a52a8ce214
commit
a88349af55
42 changed files with 1115 additions and 77 deletions
|
@ -75,11 +75,10 @@ class PostStatusService < BaseService
|
|||
end) || @options[:spoiler_text].present?
|
||||
@text = @options.delete(:spoiler_text) if @text.blank? && @options[:spoiler_text].present?
|
||||
@visibility = @options[:visibility]&.to_sym || @account.user&.setting_default_privacy&.to_sym
|
||||
@visibility = :direct if @in_reply_to&.limited_visibility?
|
||||
@visibility = :limited if %w(mutual circle).include?(@options[:visibility])
|
||||
@visibility = :unlisted if (@visibility&.to_sym == :public || @visibility&.to_sym == :public_unlisted || @visibility&.to_sym == :login) && @account.silenced?
|
||||
@visibility = :public_unlisted if @visibility&.to_sym == :public && !@options[:force_visibility] && !@options[:application]&.superapp && @account.user&.setting_public_post_to_unlisted && Setting.enable_public_unlisted_visibility
|
||||
@limited_scope = @options[:visibility]&.to_sym if @visibility == :limited
|
||||
@visibility = :limited if %w(mutual circle reply).include?(@options[:visibility])
|
||||
@visibility = :unlisted if (@visibility == :public || @visibility == :public_unlisted || @visibility == :login) && @account.silenced?
|
||||
@visibility = :public_unlisted if @visibility == :public && !@options[:force_visibility] && !@options[:application]&.superapp && @account.user&.setting_public_post_to_unlisted && Setting.enable_public_unlisted_visibility
|
||||
@limited_scope = @options[:visibility]&.to_sym if @visibility == :limited && @options[:visibility] != 'limited'
|
||||
@searchability = searchability
|
||||
@searchability = :private if @account.silenced? && %i(public public_unlisted).include?(@searchability&.to_sym)
|
||||
@markdown = @options[:markdown] || false
|
||||
|
@ -88,6 +87,11 @@ class PostStatusService < BaseService
|
|||
@reference_ids = (@options[:status_reference_ids] || []).map(&:to_i).filter(&:positive?)
|
||||
raise ArgumentError if !Setting.enable_public_unlisted_visibility && @visibility == :public_unlisted
|
||||
|
||||
if @in_reply_to.present? && ((@options[:visibility] == 'limited' && @options[:circle_id].nil?) || @limited_scope == :reply)
|
||||
@visibility = :limited
|
||||
@limited_scope = :reply
|
||||
end
|
||||
|
||||
load_circle
|
||||
overwrite_dtl_post
|
||||
process_sensitive_words
|
||||
|
@ -96,8 +100,9 @@ class PostStatusService < BaseService
|
|||
end
|
||||
|
||||
def load_circle
|
||||
raise ArgumentError if @options[:visibility] == 'limited' && @options[:circle_id].nil?
|
||||
return unless @options[:visibility] == 'circle' || (@options[:visibility] == 'limited' && @options[:circle_id].present?)
|
||||
return if @visibility == :limited && @limited_scope == :reply && @in_reply_to.present?
|
||||
return unless %w(circle limited reply).include?(@options[:visibility])
|
||||
raise ArgumentError if @options[:circle_id].nil?
|
||||
|
||||
@circle = @options[:circle_id].present? && Circle.find(@options[:circle_id])
|
||||
@limited_scope = :circle
|
||||
|
@ -148,7 +153,7 @@ class PostStatusService < BaseService
|
|||
safeguard_mentions!(@status)
|
||||
validate_status_mentions!
|
||||
|
||||
@status.limited_scope = :personal if @status.limited_visibility? && !process_mentions_service.mentions?
|
||||
@status.limited_scope = :personal if @status.limited_visibility? && !@status.reply_limited? && !process_mentions_service.mentions?
|
||||
|
||||
UpdateStatusExpirationService.new.call(@status)
|
||||
|
||||
|
@ -196,6 +201,7 @@ class PostStatusService < BaseService
|
|||
|
||||
process_hashtags_service.call(@status)
|
||||
Trends.tags.register(@status)
|
||||
ProcessConversationService.new.call(@status) if @status.limited_visibility? && @status.reply_limited?
|
||||
ProcessReferencesService.call_service(@status, @reference_ids, [])
|
||||
LinkCrawlWorker.perform_async(@status.id)
|
||||
DistributionWorker.perform_async(@status.id)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue