「user_in_X」テーマ設定のフォールバックが、解決値が false の場合に失敗する

さっそく試してみましたが、テスト中に問題に気づきました:
ユーザーが許可されたグループのいずれにも属していない場合、user_in_copy_button_allowed_groups に対する新しいチェックは結果を返しません。そのため、user_in_setting に対応していないフォーラム向けのフォールバックコードが実行されますが、失敗します:

[THEME 254 'Copy post button'] TypeError: Cannot read properties of undefined (reading 'split')

再現手順:

  1. コンポーネントをインストールし、テーマに追加します
  2. allowed_groups を管理者に制限します
  3. 管理者ではないテストユーザーになりすまし、ブラウザのコンソールを確認します

問題はここにあるようです:

if (Object.hasOwn(settings, "user_in_copy_button_allowed_groups")) {
    if (settings.user_in_copy_button_allowed_groups) {
      return true;
    }
  }

これは値が true の場合のみ早期リターンします。false の場合、下のフォールバックコードが実行されますが、このコードは設定値がまだ文字列として存在することを前提としています。しかし、私が copy-post からフォールバックパターンをコピーした [1] コンポーネントでのテストでは、user_in_X サポートが有効になると、その値は undefined になります。おそらく、その場合も false を返すようにすれば、user_in_X キーが完全に存在しない場合(旧版コア)のみフォールバックが使用され、解決された値が偶然 false である場合は使用されなくなるはずです。

私の仮定は正しいでしょうか?それとも、設定は依然としてグループを文字列として提供することが期待されているのでしょうか?


  1. prefilled composer link ↩︎

「いいね!」 1