リアクション数が表示されない場合にリアクションが表示されないことがある

@JammyDodger 氏がモバイルでこの投稿のリアクションを見ることができなかったことを確認しました: ToS and Privacy buttons disappear from /about when I remove my custom FAQ URL - #3 by Canapin [example1]

Jammy (モバイル) - リアクションなし:

Jammy (デスクトップ) - 左側にリアクションはあるが、右側にはない:

他のすべての人 - 彼がリアクションしたことがわかり、すべてが期待どおりに機能している:

リアクションアクティビティを検索した後、問題が発生する例を見つけました: Admins may not realize certain sidebar customization are global - #8 by JammyDodger [example2]

両方の投稿に共通しているのは、リアクションがあるものの、いいねの数が actions_summary のカウントとして利用できないように見えることです。

投稿で自分でリアクションしたかどうかに応じて、actions_summary から id: 2 が欠落しているか、リアクションしていない場合はカウントが欠落していることがわかります。私の理解が正しければ、can_act であるか count > 0 の場合に id: 2 が含まれます。

2人のユーザーがリアクションした投稿の例2(https://meta.discourse.org/posts/1404583.json)の JSON を詳しく見ると、このカウントが欠落しています。

リアクションしていないユーザー
can_act true
リアクションしたユーザー
id 2 なし

この場合、両方のユーザーで count: 2 が欠落しています。すでにリアクションしたユーザーの場合、これは id: 2 が完全に欠落するという結果になります。これは、リアクションが存在するにもかかわらず、リアクションしたユーザーに対してリアクションが表示されない理由を説明しているようです。

比較のために、2つのリアクションがあり、カウントが期待どおりに表示される投稿はこちらです: Buttons to order items in emoji list settings is difficult to find on touch devices - #2 by zogstrip JSON はこちらです: https://meta.discourse.org/posts/1907506.json

リアクションしていないユーザー
can_act true
リアクションしたユーザー
acted true

この投稿では、カウントが利用可能であり、リアクションは期待どおりに表示されます。

この問題の影響を受けている Meta 上の投稿がいくつあるのか、または他のフォーラムも影響を受けているのかはわかりません。また、データが欠落している理由を示す手順も提供できません。私が言えるのは、一部の投稿では、リアクションが携帯電話に表示されず、ラップトップでは部分的にしか表示されず、その原因はこのデータが欠落していることに関連しているように見えるということです。

「いいね!」 5

調査を開始しました。作業中の修正はこちらです。

「いいね!」 1

これらがどのように発生したか突き止めることはできましたか?2023年と2024年初頭の例しか見つかりませんでした。そのため、すべてのリアクションが「いいね」としてカウントされるようになる前のデータと、その変更後のデータで何か違いがあるのか疑問に思いました。そこで、いいねとしてカウントから除外されるリアクションを使用した場合に何が起こるか試してみましたが、current_user_reactioncan_undoが偽(false)であっても、「can_act」は真(true)のままでした。

これは、discourse_reactions_like_sync_enabledfalse に設定されているためです。これは、既存のデータへの影響を避けるために、2024年5月からの移行によって意図的に行われました。

この設定が無効になっている場合、ReactionLikeSynchronizer は実行されません。この同期機能は以下を担当しています。

  • リアクションの PostAction(いいね)レコードを作成する
  • リアクションを反映するように posts.like_count を更新する

同期が実行されない場合:

  1. discourse_reactions_reaction_users にリアクションが存在する
  2. しかし、対応する PostAction レコードがない
  3. そして posts.like_count は 0 のままである

タイミングに関するあなたの直感は的を射ています。2023年/2024年初頭の投稿は、この同期がアクティブでなかったときにリアクションが追加されたため、その like_count は更新されませんでした。古いシリアライザーロジックは、count = 0 かつ can_act = false(取り消しウィンドウが期限切れ)の場合、いいねアクションを完全に省略していました。

修正は根本的なデータ不一致を修正するものではなく、PostAction/like_count データが同期されていない場合でも、UI がリアクションを正しく表示されるようにするだけです。discourse_reactions_like_sync_enabled = false のサイトでは、PostAction レコードとは独立して存在するリアクションは予期された動作です。

「いいね!」 1

このトピックは20時間後に自動的にクローズされました。新しい返信は許可されていません。