Project

General

Profile

Actions

機能 #1337

closed

汎用Modelビューア

Added by toshi_a 初音 over 5 years ago. Updated over 5 years ago.

Status:
終了
Priority:
通常
Target version:
Start date:
2019-05-26
Due date:
% Done:

0%

プラグイン名:
modelviewer

Description

プロフィールタブやメッセージ詳細といったプラグインで個別に対応するのを止め、特定の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には大量のタブを管理する良い方法がない。

Actions

Also available in: Atom PDF