Actions
機能 #1337
closed汎用Modelビューア
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