Skip to content
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

bugfix when favourite_tag unlock to set visibility #94

Merged
merged 3 commits into from
Oct 1, 2017

Conversation

lnanase
Copy link
Collaborator

@lnanase lnanase commented Sep 21, 2017

v1.6系になって、setDefaultTag 実行後に clearAll が実行されなくなったようで、
タグ解除時に公開設定が戻らなくなっていましたので修正しました( mastodon#4511 の影響?)。

また、#71 のシングルモードでの返信時の公開範囲設定も問題ないはずです。

fixed #87

@lnanase lnanase added the bug Something isn't working label Sep 21, 2017
@lnanase lnanase requested a review from takayamaki September 21, 2017 13:00
@takayamaki
Copy link
Member

takayamaki commented Sep 21, 2017

ものすごーく細かい、というか実用上はあまり遭遇しないであろうケースで非常に申し訳ないのですが、

  1. 未収載以下の公開範囲のtootに対してreplyボタンを押す
  2. 公開で登録されているお気に入りタグをロックする

というケースと

  1. 未収載以下の公開範囲のtootに対してreplyボタンを押す
  2. 公開範囲は問わず、いずれかのお気に入りタグをロックする
  3. お気に入りタグのロックを解除する

というケースで、いずれもin_reply_toが残ったまま公開範囲がpublicになってしまいます。

いずれのケースもより狭いほうに合わせられる or 戻るというのが最も違和感のない動作ではないかと思います。

iconsの中にタグロックしたものだけでなくreplyで初期設定されている公開範囲も含めておくことが出来れば、上記の動作が得られるのかな…と思いますが、いかかでしょうか。

@lnanase
Copy link
Collaborator Author

lnanase commented Sep 23, 2017

replyや、手動で公開レベルを変更した後でタグ設定を行った場合、

  • 既に設定されている公開レベルと、お気に入りタグの公開レベルの狭い方に合わせる

  • お気に入りタグ解除時は、既に設定された公開レベルに戻す

仕様に変更致しました。

お手数ですが、ご確認をお願い致します。

Copy link
Member

@takayamaki takayamaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認したところ、privacyがpublicである状態から、公開範囲がunlistedに設定されたFavouriteTagをロック、解除しても公開範囲がdefault_privacyのpublicに戻りませんでした。
reducerの138行目を参照したところ、privacyがnullとなるのは初期状態のみですので、次状態のprivacyがdefault_privacyとなることがないため、このような動作となっているようです。

これをもし「ロックされているFavouriteTagが無ければprivacyをdefault_privacyに戻すという動作」に修正した場合、

  1. default_privacyはpublicである
  2. unlistedなtootに対する返信ボタンをクリックしてprivacyがunlistedに設定される
  3. privateなタグをロックし、解除する
  4. unlistedなtootに対するin_reply_toが残っているにも関わらずprivacyがpublicになってしまう

というケースが考えられます。

これらのprivacyの設定に関する動作の混乱は、privacyの範囲比較が138行目と142行目、更にその前のcomponents/favourite_tags.jsのcomponentWillUpdateと複数個所に分散してしまっていて全体像が把握しづらいのが原因のような気がします。
components/favourite_tags.jsのcomponentWillUpdateは問題なく動作しているようですのでそのままにするとしても、reducerのほうについては

  1. reply先のprivacyを保持しておくreply_privacyを新設
  2. privacyPreferenceを任意個比較できるように改修
  3. map.set('privacy', privacyPreference(tag_privacy, reply_privacy, default_privacy))

とするのがコードの変更量はともかく実装としてはシンプルのような気がしてきたのですが、いかがでしょうか。
あとはreply_privacyをCOMPOSE_REPLY_CANCELやCOMPOSE_SUBMIT_SUCCESSの際に忘れずにクリアすれば大丈夫のような気がします。

@lnanase
Copy link
Collaborator Author

lnanase commented Sep 30, 2017

対応が遅くなって申し訳ありませんでした。

ミスしてたところを修正しました。
まだおかしかったら申し訳ありませんが、
ご確認をお願い致します。

Copy link
Member

@takayamaki takayamaki left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@takayamaki takayamaki merged commit b29480c into imas:imastodon Oct 1, 2017
@lnanase lnanase deleted the bugfix_favourite_tag_set branch March 13, 2018 13:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

お気に入りタグのロックを外した際に公開範囲がデフォルトに戻らない
2 participants