プロジェクト

全般

プロフィール

機能 #1337

完了

汎用Modelビューア

toshi_a 初音 さんがほぼ5年前に追加. ほぼ5年前に更新.

ステータス:
終了
優先度:
通常
担当者:
対象バージョン:
開始日:
2019-05-26
期日:
進捗率:

0%

プラグイン名:
modelviewer

説明

プロフィールタブやメッセージ詳細といったプラグインで個別に対応するのを止め、特定のModelに着目したタブを表示するプラグインを新設する。

目標

  • World追加系プラグインを作ったときに、プロフィールタブなどの実装を簡単にする
  • それを使って現在のTwitterのプロフィールと同様のことを実現できる
  • これを利用して、Mastodonのプロフィール画面などを作る

サードパーティプラグイン

以下のようなコードで、Modelに対応したIntentが定義され、それを発行すれば開けるようにする。画面レイアウトとしては、今と同じように左に model.icon の画像があれば表示して、右側にkey-valueリストを表示する。
このkey-valueリストだけは自動的に判別できないので、開発者にコーディングしてもらう。

defmodelviewer(model_slug_or_class) do |model|
  [
   ['名前', model.title]
   ['所属インスタンス', model.instance.domain]
  ]
end
  • model_slug_or_class: ビューアを定義する対象となるModel

ユーザの操作などでModelが開かれたときに呼ばれるブロック:

  • model: 対象となるDiva::Model

fragmentの拡張

deffragment model_slug_or_class, fragment_slug, name do |model|
  set_icon Skin[:timeline]
  tl = timeline()
  tl << model.latest_toot
end
  • model_slug_or_class: fragmentを定義する対象となるModel
  • fragment_slug: fragmentの固有名。並び替えに必要になりそうだけど、実際どうなんかな
  • label: タブの名前
  • model: 対象となるDiva::Model

現在だとプロフィールタブの下にいっぱいあるタブ。defmodelviewerの中で定義せず、Modelに関連付ける。
あとから動的に差し込んだり、modelviewerを定義したのと異なるプラグインでfragmentを拡張できるようにすることで、プラグインを分けられるようにする。

その他

プロフィールのレジュームについて

user_detail_viewプラグインでは起動後に前回終了時に開いていたタブをレジュームするが、modelviewerでは実装しない。
人類はタブを閉じないが、今のmikutterには大量のタブを管理する良い方法がない。

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