La primera vez que noté una segunda notificación para la misma respuesta sin que se agregara ningún enlace, cita o mención en la edición fue después de la edición en Topics from some categories do not appear on /latest - #36 by JammyDodger. Este caso es ligeramente diferente a mis pasos de reproducción a continuación, pero creo que el problema subyacente es el mismo.
La segunda publicación donde sucedió esto fue en Messages section for sidebar - #13 by nathank. Fue similar: la edición no agregó nada que resultara en una notificación; las citas ya estaban allí antes, y aun así fui notificado por segunda vez.
Aquí están los pasos para reproducir que encontré y que funcionaron [1]
Necesitas 3 usuarios: OP, notifiedUser, spammer
OP crea un tema
notifiedUser responde
OP responde a la publicación de notified user notifiedUser es notificado sobre la respuesta (esperado)
spammer responde a la publicación de notifiedUser. La respuesta contiene un enlace a otra publicación de notifiedUser y una cita de la publicación a la que se responde. (opcional: también puedes @mencionar a notifiedUser) notifiedUser es notificado sobre la respuesta (esperado) [En caso de que hayas agregado una @mención, la notificación es sobre la @mención (esperado)]
notifiedUser lee las nuevas respuestas para marcar las notificaciones como leídas y navega de vuelta a otro lugar para que no perdamos una notificación.
spammer edita la respuesta y corrige un error tipográfico (o agrega edit1) notifiedUser es notificado sobre ser citado (inesperado, ya fueron notificados sobre esta respuesta antes y la cita ya estaba allí, no hay necesidad de decírselo)
spammer edita la respuesta de nuevo para corregir otro error tipográfico (o agrega edit2) notifiedUser es notificado sobre ser enlazado (inesperado, ya fueron notificados sobre esta respuesta antes y el enlace ya estaba allí, no hay necesidad de decírselo)
El video solo muestra los pasos finales 5-7. Spammer está a la izquierda, notifiedUser a la derecha
al menos la mayor parte del tiempo, a veces incluso agregar una @mención en la edición no activa una nueva notificación ↩︎
Cambia las líneas 589-599 de:
# linked, quoted, mentioned, chat_quoted may be suppressed if you already have a reply notification
if [
Notification.types[:quoted],
Notification.types[:linked],
Notification.types[:mentioned],
Notification.types[:chat_quoted],
].include?(type)
if existing_notifications.find { |n| n.notification_type == Notification.types[:replied] }
return
end
end
A:
# linked, quoted, mentioned, chat_quoted may be suppressed if you already have any notification about this
post
if [
Notification.types[:quoted],
Notification.types[:linked],
Notification.types[:mentioned],
Notification.types[:chat_quoted],
].include?(type)
return if existing_notifications.any?
end
Esto funcionará, pero me preocupa un poco porque hay otras notificaciones que pueden pasar por aquí. (notificaciones de plugins, por ejemplo, que quizás queramos suprimir)
@lindsey aquí hay una pregunta de producto: ¿cuándo deberíamos suprimir una notificación?
¿Supongo que la pequeña corrección es un paso adelante?
No estoy seguro. ¿No es esa una notificación de respuesta en mi video? Y, sin embargo, todavía hay una notificación sobre la cita y el enlace después. Por lo tanto, extender eso a otros tipos de notificaciones podría no ayudar aquí. Pero tal vez cubra otros casos extremos.
Me pregunto si el problema en mi reproducción es la notificación de “2 respuestas”. ¿Eso rompe la verificación de notificaciones existentes por esa respuesta cuando se edita la respuesta?
En general, esperaría que no hubiera notificaciones adicionales debido a una edición si todos los desencadenantes ya estuvieran en la publicación cuando la leí antes. Corregir una errata no relacionada con una mención/enlace/cita no debería generar una nueva notificación.
Creo que, en caso de que se reemplace un desencadenante, preferiría que la notificación existente y no leída se cambie (o se reemplace) en lugar de recibir una segunda. Eliminar la @mención en la publicación de un usuario para evitar ruido no debería resultar en una segunda notificación sobre la cita. Esperaría que la notificación sobre la @mención desapareciera.
Creo que el único caso en el que querría una nueva notificación es si una edición agrega un tipo de notificación más importante. Entonces, cuando alguien enlaza mi publicación y más tarde agrega una edición que me menciona (@menciona), tiene sentido avisarme porque ya no parecen estar hablando de algo que escribí, sino directamente a mí. Dado que una edición ya no impulsa el tema, las @menciones podrían ser una forma útil de alertar a los usuarios sobre las ediciones.
Creo que Moin describe lo ideal desde la perspectiva del usuario, pero creo que nos costaría acertar en esta parte:
Quizás podamos gestionar eso para las notificaciones dentro de la aplicación, pero no podemos retirar las notificaciones push o por correo electrónico. (En general, soy reacio a añadir más complejidad a las notificaciones, así que aunque a algunos no les importe que la notificación dentro de la aplicación y la de correo electrónico/push sean diferentes, preferiría que renunciáramos a esto).
Sin embargo, estoy de acuerdo con esto:
Si una publicación debe notificar a un usuario (por ejemplo, el autor de la publicación cita al Usuario A), notifique al usuario o usuarios relevantes (por ejemplo, el Usuario A recibe una notificación de que ha sido citado).
Si una edición de esa publicación no cambia a quién se debe notificar o por qué (por ejemplo, el autor de la publicación edita un error tipográfico), no notifique a nadie.
Si una edición de esa publicación sí cambia a quién se debe notificar (por ejemplo, el autor de la publicación menciona al Usuario B) o por qué (por ejemplo, el autor de la publicación menciona al Usuario A), notifique al usuario o usuarios afectados (por ejemplo, el Usuario B recibe una notificación de mención, el Usuario A recibe una notificación de mención).