Non voglio rendere nulla troppo complesso.
Stavo esaminando parte del codice per questo (grazie @tshenry per il link), e non sembra che debba essere così complicato.
Le menzioni di gruppo vengono attualmente attivate qui (righe 78-80). La funzione expand_group_mentions() è un generatore responsabile di produrre gli utenti che dovrebbero ricevere le notifiche delle menzioni di gruppo (rispettando politiche come SiteSetting.max_users_notified_per_group_mention).
Sembra un luogo naturale per inserire questa logica.
Nella funzione create_notification, sopprimiamo le notifiche per chiunque abbia già ricevuto una notifica dello stesso tipo. Ecco perché la modifica di un post con una menzione di gruppo attiva una notifica per i nuovi membri del gruppo: viene effettivamente generata una notifica per tutti gli utenti del gruppo, ma viene poi soppressa per le persone che l’hanno già ricevuta.
Sto suggerendo qualcosa di simile, aggiornando la funzione expand_group_mentions() per filtrare anche i gruppi che hanno già un record nella tabella group_mentions.
Qualcosa del genere (perdonate la mia scarsa conoscenza della sintassi Ruby):
def expand_group_mentions(groups, post)
return unless post.user && groups
Group.mentionable(post.user, include_public: false).where(id: groups.map(&:id)).each do |group|
next if group.user_count >= SiteSetting.max_users_notified_per_group_mention
# Aggiungi controllo per i gruppi già menzionati
next if GroupMentions.where(group_id: group.id, post_id: post.id).length > 0
yield group, group.users
end
end
Questo non risolve comunque l’avviso JIT.
Sto cercando di aiutare a risolvere il problema, fatemi sapere se sto solo diventando fastidioso… ![]()