Add: Webでの引用表示 (#50)

* Add compacted component

* 引用表示の間にコンテナをはさみ、不要なコードを削除

* 引用APIを作成、ついでにブロック状況を引用APIに反映

* テスト修正など

* 引用をキャッシュに登録

* `quote_id`が`quote_of_id`になったのをSerializerに反映

* Fix test

* 引用をフィルターの対象に含める設定+エラー修正

* ストリーミングの存在しないプロパティ削除によるエラーを修正

* Fix lint

* 他のサーバーから来た引用付き投稿を処理

* Fix test

* フィルター設定時エラーの調整

* 画像つき投稿のスタイルを調整

* 画像つき投稿の最大高さを調整

* 引用禁止・非表示の設定を追加

* ブロック対応

* マイグレーションコード調整

* 引用設定の翻訳を作成

* Lint修正

* 参照1つの場合は引用に変換する設定を削除

* 不要になったテストを削除

* ブロック設定追加、バグ修正

* 他サーバーへ引用送信・受け入れ
This commit is contained in:
KMY(雪あすか) 2023-10-02 11:12:51 +09:00 committed by GitHub
parent 3c649aa74d
commit 44b739a39a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
53 changed files with 1362 additions and 120 deletions

View file

@ -16,6 +16,7 @@ class REST::StatusSerializer < ActiveModel::Serializer
attribute :pinned, if: :pinnable?
attribute :reactions, if: :reactions?
attribute :expires_at, if: :will_expire?
attribute :quote_id, if: :quote?
has_many :filtered, serializer: REST::FilterResultSerializer, if: :current_user?
attribute :content, unless: :source_requested?
@ -33,6 +34,23 @@ class REST::StatusSerializer < ActiveModel::Serializer
has_one :preview_card, key: :card, serializer: REST::PreviewCardSerializer
has_one :preloadable_poll, key: :poll, serializer: REST::PollSerializer
class QuotedStatusSerializer < REST::StatusSerializer
attribute :quote_muted, if: :current_user?
def quote
nil
end
def quote_muted
if relationships
muted || relationships.blocks_map[object.account_id] || relationships.domain_blocks_map[object.account.domain] || false
else
muted || current_user.account.blocking?(object.account_id) || current_user.account.domain_blocking?(object.account.domain)
end
end
end
belongs_to :quote, if: :quote?, serializer: QuotedStatusSerializer, relationships: -> { relationships }
def id
object.id.to_s
end
@ -159,6 +177,12 @@ class REST::StatusSerializer < ActiveModel::Serializer
end
end
def quote_id
object.quote_of_id.to_s
end
delegate :quote?, to: :object
def reblogged
if relationships
relationships.reblogs_map[object.id] || false