-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
タイムライン上にフォローボタンを表示するオプションが欲しい #13769
Comments
(実装を軽く調査したメモ書きです) UserEntityServiceには既にAPIの実行者と対象ユーザの関係を調べる機能は存在するが、これはUserスキーマをUserLiteよりも詳細なもので呼び出した時にのみ返される。しかし、NoteEntityServiceでMiNoteをpack化する際はUserLiteでの呼び出しとなっており、詳細情報の取得は行われていない。 pack化時にUserDetailedを使うようにすればフォロー関係も同時に取得可能で、本件の実現も可能かと思われるが実行時の負荷が懸念…(キャッシュがあるとはいえ、追加情報をそれなりに取るので) |
パフォーマンス上の懸念はやはり大きいのですねぇ…… |
別途users/relations APIを呼び出せばいい気もするけど、まあ毎ノートそれをやるのはちょっとという感じではある |
別途でusers/relations を呼び出すのであれば、userEntityServiceのpack段階で行われるgetRelationの情報を元にフォロー状態を取得させて、userLiteに新たにfollowStateのようなenumを定義して追加してあげれば現状とそこまで動作的には変わらない気がしますね。 |
mastodon上で参考に挙げた実装を作ったのえる氏に解説して頂けたのですが、かなり重たそうな処理をしていたみたいです。 キャッシュに無いユーザーを見かけたらRelationshipを参照しにいく仕組みだそうで、misskey.ioのローカルや連合タイムラインだとなかなか凄いことになりそうですね…… |
そこら辺の負荷についてmisskey上のコードを見ていたんですが、
なので増えるとしても取得時に毎回クエリが打たれる処理くらいだと思っています(それでもioレベル、ましては中堅でもえげつない処理だと思われ)。 ※連合側のフォロー・フォロワー情報の処理はapのinbox側でいい感じに行われているっぽい感じがしたので省きました。 可能性があるとするならばcacheServiceにいい感じにfollowingsCacheが存在しているのでこれをfollowersCacheとかでいい感じに出来たりしないかなってことですかね...
まさにこれなんですよね |
Summary
「タイムライン上にフォローボタンを表示する」
「被フォロー状態をフォローボタンに反映する」
「フォローボタンで追加ダイアログを開く」
これらのオプションが欲しい。
参考までに、Fedibirdで実装されている当該機能の切り抜きを提示します。
Purpose
タイムラインで見かけたノートの投稿者を現在フォローしているのかが気になった際、確認およびフォローするための手数を大きく減らせる。
スマホではアイコンホバーが有効に機能しないため、本機能によりアイコンホバー操作の代替手段を提供できる
フォローしているか否かについては、特にアカウント開設初期や、新しいユーザーが増加している最中に困りやすい。
こういう所を意識し過ぎること自体が健康的では無いのは理解できるものの、好ましいか好ましく無いかに関わらず結局気になって確認を繰り返すことで疲れることがあるので、いっそ見える状態に出来ると助かる。
Summaryで参考に挙げたFedibirdでは、リスト管理のダイアログがフォロー状態の変更画面を兼ねているため、
「フォローボタンで追加ダイアログを開く」を選択しているとリスト管理のダイアログが出るようになっています。
Misskeyではここでアイコンホバー時のポップアップと同じモノが出てくれば良いのではないかと思っています。
これがスマホで出せない画面なので、これが出せるだけでもだいぶ違うと思うのです……
Do you want to implement this feature yourself?
The text was updated successfully, but these errors were encountered: