プロジェクト

全般

プロフィール

バグ #1042

完了

MessageMixinの:descriptionを書き換えても、本文の表示が変化しない

Satoshi Okuno さんがほぼ7年前に追加. ほぼ6年前に更新.

ステータス:
却下
優先度:
通常
担当者:
対象バージョン:
プラグイン名:
MessageMixin
ブランチ:
クラッシュする:
いいえ

説明

MastodonにはCW(閲覧注意)と言う機能があって、初期状態ではメッセージの一部が隠れており、ボタンを押すことで全文が表示されるメッセージが作れます。

そんな感じの挙動をmikutterでも実現すべく、SubpartsIntractiveつきのメッセージを作って、ボタンを押すと本文が書き換わる感じの処理を作ろうとしました。
しかしながら、MessageMixinの:descriptionを書き換えてPlugin.call(:modify_message)しても、本文の表示が変化しませんでした。

調べると、MessageMixin::to_show()がメッセージ(から生成したPangoオブジェクト)をキャッシュしているのが原因とわかりました。

:descriptionに変化があったら、キャッシュを更新するようにしてみました。
マージご検討ください。

petitsurume


ファイル

toshi_a 初音 さんがほぼ7年前に更新

MessageMixin#to_showは、キャッシュとアンエスケープを行ってるんですね。両方とも完全にTwitterの都合なので、to_showをdescriptionのエイリアスにして、Message#to_showにこのような実装を入れるほうが良いと思います。
キャッシュについても、一度行われた投稿の本文は決して変わらないという前提が成立するサービスのほうが少ないと思うので、MessageMixinでは行わないほうが良いかと思います。

Satoshi Okuno さんがほぼ7年前に更新

コメントありがとうございます。
to_show()はdescriptionを返すのみに見直しました。
必要あれば子クラスでオーバーライドしてもらう感じで。

toshi_a 初音 さんがほぼ7年前に更新

これだと、ツイートに<>&などが含まれているとエスケープされた状態で表示されてしまうので、Message#to_showを実装する必要がありますね

Satoshi Okuno さんがほぼ7年前に更新

#moguno中のレビューありがとうございます。

Twitterにはエスケープが必要なのは了解です。
下記の認識なのですが、齟齬あればご教示頂ければ。

MessageはMessageMixinをmixinしていないので、両者は無関係。
すなわち、Message::to_show()とMessageMixin::to_show()は別物(同じ実装がコピペされている状態)
そのため今回のパッチはMessageMixin::to_show()のみを処置して、Twitter側(Message)のエスケープ処理に影響を与えない感じにしてます。

toshi_a 初音 さんがほぼ7年前に更新

  • ステータス新規 から レビュー待ち に変更
  • 担当者Satoshi Okuno にセット

すみません、確認し直しました。
問題なさそうなのでmasterとmergeしてブランチ topic/1042-message-mixin-to_show-no-longer-cache-value を作成しました。一応このブランチで確認してもらっていいですか。

Satoshi Okuno さんがほぼ6年前に更新

  • ステータスレビュー待ち から 却下 に変更

本件大変遅くなりました。

Mastodonで会話した通り、少なくともmikutter 3.7ではdescriptionは更新されない前提と言うことで了解しました。

すみませんが、本チケットはクローズさせてください。

他の形式にエクスポート: Atom PDF