リアクションメニューが投稿アクションの元に戻すウィンドウの外に表示される(モバイル)

https://community.openstreetmap.org/
サムズアップをしました。13分後に戻ってきて、ハートマークに変更したかったのです。ご覧の通り、ここまでできました。しかし、ハートマークに変更できません。10分ルールがあって、それ以降は何も変更できないとしましょう。その場合、私の言いたいことは、変更できないアイコンのリストを表示すべきではないということです。なぜなら、それらのアイコンはどれも使えないからです。

つまり、サムズアップをもう一度タップして、他のものに変更しようとした場合、何も反応がなく、選択肢のリストが表示されないのが最善です。なぜなら、それらの選択肢は使えないからです。

さらに良いのは、サムズアップをもう一度タップしたときに、10分経過したため選択を変更できないという説明メッセージが表示されることです。

なぜローカルサイトではなく、ここでメタに投稿しているのか?それは、このような選択肢を与えるすべてのサイトに影響する問題について話しているからです。

「いいね!」 1

はい、モバイル(Android/Chrome)で再現できます。以前はそうではなかったと思うので、何らかの退行の可能性があります。

デスクトップでは、:no_entry_sign: と「リアクションを削除できなくなりました」というホバーテキストが表示されます。

手順:(モバイルで)

  • リアクションを有効にする
  • post undo action window mins を 1 に設定する(オプション)
  • 投稿にリアクションし、N 分待つ
  • リアクションアイコンを長押しする
  • リアクションまたはリアクションの削除ができないにもかかわらず、リアクションメニューが表示される
  • メニューは応答せず、エラーも表示されない
「いいね!」 3

履歴を調べても、リグレッションと思われるものが見つかりませんでした。

toggleFromButton にはクリックのチェックがありますが、

https://github.com/discourse/discourse-reactions/blob/main/assets/javascripts/discourse/widgets/discourse-reactions-actions.js#L430-L435

タッチにはありません。

https://github.com/discourse/discourse-reactions/blob/main/assets/javascripts/discourse/widgets/discourse-reactions-actions.js#L170-L183

リアクションリストが開かないようにするには、以下のようにできると思います。

  touchStart() {
    cancel(this._touchTimeout);
    if (this.capabilities.touch) {
      if (
        this.attrs.post.current_user_reaction &&
        !this.attrs.post.current_user_reaction.can_undo
      ) {
        return false;
      }
      ...
}
「いいね!」 2

ちなみに、リアクションを削除できないことをユーザーに伝えるのは良いことですが、時間制限についても言及した方がよいでしょう。そうしないと、ユーザーはそれが1日なのか、1ヶ月なのか、1分なのか、あるいはそれ以外なのかを知ることができません。ユーザーが知る方法は、試行錯誤しかありません。

「いいね!」 2

いいねの制限時間が非常に珍しいデフォルト設定だと気づき、最初に変更したことの一つでした(いつでも自由にいいね/いいね解除ができるように)。参考までに。

「いいね!」 3