Mastodonで、公開範囲をUnlisted、Private、Directにして、タグ付きでTootすると、ネットからのタグ一覧(インスタンスURL/tags/タグ名)で見えてしまうBUG(これは明らかにBUGだと思う)の修正方法。
controllers/tags_controller.rbの
1 2 3 4 5 6 7 8 9 10 11 |
# frozen_string_literal: true class TagsController < ApplicationController layout 'public' def show @tag = Tag.find_by!(name: params[:id].downcase) @statuses = @tag.statuses.order('id desc').paginate_by_max_id(20, params[:max_id]) ##### @statuses = cache_collection(@statuses, Status) end end |
この#####の行を
1 |
@statuses = @tag.statuses.order('id desc').where(visibility: [:public]).paginate_by_max_id(20, params[:max_id]) |
これに変更する。つまり対象をvisibility: [:public]として、一覧に表示するTootを絞っている。
コード修正後のインスタンスの起動は先に書いたここの後半を参考にして欲しい。既にMyインスタンスは修正済みで作動している。
Unlistedとタグ付きDMのネットからの一覧表示問題も片付いたので、これで少しは安心できるかな!?
追記1:参考までにログイン後のHome画面(3つTLが並ぶ画面)では、先のUnlistedも含め問題は発生しない。理由は使っているロジックが違うから。自らAPIを呼んで描画している。
インスタンスURL/api/v1/timelines/public/
インスタンスURL/api/v1/timelines/tag/mastodon
この様に呼ぶとJSONが得られる。同じ方法でネット側(非ログイン系)の画面も作れると思うのだが、何故この様な仕様になっているかは不明だ。
追記2:このBUGはcommit済みとのこと。次のリリースまで待てない時に参考にして欲しい。
@rokuzouhonda これは https://t.co/F6uZPConTA で報告されて、2日前のコミットで修正されたようなので、次のリリースでは直っているかと思います
— masayoshi takahashi (@takahashim) April 23, 2017
追記3:v1.3系で修正済み