Project

General

Profile

Actions

バグ #959

closed

settings.ymlで特定のキーに対する値が設定を開いた回数分増える

Added by あひる 家鴨 over 7 years ago. Updated over 7 years ago.

Status:
終了
Priority:
通常
Target version:
プラグイン名:
ブランチ:
クラッシュする:

Description

settings.yml の UserConfig::reply_present_policy 及び UserConfig::quote_present_policy の値が設定画面を開いた回数だけ増えていきます。
UserConfig::reply_present_policy の場合は

- :icon

UserConfig::quote_present_policy の場合は
- :header
- :icon
- :edge

がそれぞれ回数分生成されているのを確認しました。


Files

multiselect.patch (1.03 KB) multiselect.patch multiselectのパッチ あひる 家鴨, 2017-01-11 08:21
Actions #1

Updated by あひる 家鴨 over 7 years ago

settingsのmultiselectが原因のようです。
source:core/plugin/settings/multiselect.rb#L72 は設定を開くとチェックが入っている場合毎回呼ばれますが、その度に [value] が追加されています。
これによって、今回報告した問題が引き起こされています。
とりあえず対策としては、value を入れる際に get で得た既存の値と同じものがあるかを判定し、なければ set を実行するというものにしてみましたが、いかがでしょうか。

listener.set((listener.get || []) + [value]) unless (listener.get || []).include?(value)

source:core/plugin/settings/multiselect.rb#L80に関しても同様です

この修正をしてから既存の環境と新しく作った環境の両方で本チケットの問題が再現しないことを確認しました。

パッチを添付します。( multiselect.patch

Actions #2

Updated by あひる 家鴨 over 7 years ago

  • Status changed from 新規 to パッチ適用待ち
Actions #3

Updated by toshi_a 初音 over 7 years ago

  • Status changed from パッチ適用待ち to レビュー待ち
  • Assignee set to あひる 家鴨

mergeしました。ちょっとだけ変更していて、値の書き換えが行われる度に重複を排除するようにしています。本来であれば要らない処理ですが、既存のユーザ全員の設定にゴミが入っているはずなので、今後書き換えられた時に重複が排除されるようにしています。

Actions #4

Updated by あひる 家鴨 over 7 years ago

  • Status changed from レビュー待ち to 解決

設定を開いても増えないことと、設定更新時に既存の重複が排除されるのを確認しました。
ありがとうございます。

Actions #5

Updated by あひる 家鴨 over 7 years ago

  • Assignee changed from あひる 家鴨 to toshi_a 初音
Actions #6

Updated by toshi_a 初音 over 7 years ago

  • Status changed from 解決 to 終了
Actions

Also available in: Atom PDF