Penso che questo possa essere un bug in Discourse, ma non ne sono sicuro. Forse sto facendo qualcosa di sbagliato.
Ho un plugin che aggiunge informazioni al connettore user-card-post-names.
Handlebars:
Javascript:
Che a sua volta chiama questo Javascript che fa la maggior parte del lavoro:
Dettagli del problema:
All’interno del codice JS precedente ci sono queste due righe:
var version = userModel.custom_fields && userModel.custom_fields["directoryopus_link_version"];
var edition = userModel.custom_fields && userModel.custom_fields["directoryopus_link_edition"];
Poi fa un test if (version || edition) { ... e genera alcune stringhe (opusLinkClass, opusLinkIcon, opusLinkText) a seconda del risultato, che poi memorizza:
component.set("opusLinkClass", opusLinkClass);
component.set("opusLinkIcon", opusLinkIcon);
component.set("opusLinkText", opusLinkText);
Quelle stringhe vengono poi utilizzate nel file handlebars all’inizio di questo post.
Non ci sono mai errori o avvisi nella finestra di log del browser, ma a volte questo va storto.
Sto testando con un account che ha entrambi i custom_fields impostati, quindi il test if (version || edition) dovrebbe sempre andare nel primo ramo, non nel else if (!viewingStaff) sottostante.
Eppure a volte va nel secondo ramo, il che significa che version ed edition non erano impostati.
Di solito non succede, motivo per cui penso che possa essere un bug in Discourse.
Sembra succedere solo se creo un nuovo thread e poi rispondo, o se modifico una risposta che ho appena dato. È come se l’oggetto userModel non venisse inizializzato correttamente quando il connettore viene eseguito in alcune situazioni, forse a causa di una race condition da qualche parte?
Sembra succedere una sola volta per thread. Se aggiorno la pagina con F5, tutto va bene di nuovo e continua ad andare bene per quel thread. (Almeno per quanto ne so. Sembra semi-casuale, quindi è possibile che non l’abbia più visto accadere per lo stesso thread.)
Grazie per il tuo tempo e per qualsiasi suggerimento.