Uno dei bug rognosi riscontrati con dell'integrazione del Fediverso su NodeBB era questo per cui, dalla Spacc BBS ed altri potenziali forum colpiti dal problema, era impossibile seguire utenti di altre istanze: cliccare il tasto di follow/unfollow appariva fare qualcosa, non restituendo alcun errore e cambiando il colore del tasto, ma ricaricando la pagina ci si accorgeva come non fosse accaduto (mai) nulla.
E beh... ormai è un po' tardi per fare questo post informativo perché, dopo la mia segnalazione di 4 giorni fa agli sviluppatori della piattaforma, da me composta subito dopo l'aggiornamento della Spacc BBS alla v4.0.0, la magagna sembra essere stata risolta proprio ieri, con il rilascio della v.4.0.1!
[image: 1738252131699-931d971a-088a-4ffa-9e34-797bd86aa14a-image.png]
Non ho creato la issue prima (mesi fa!) semplicemente perché non avevo ben capito la causa del problema; credevo fosse nel backend, ed avendo già avuto problemi in passato lì per via non del software, ma della nostra configurazione inusuale, ho preferito evitare di segnalare un problema che non riuscivo neanche troppo bene ad individuare, notando che (per quanto io sapessi) solo il nostro forum ne era affetto. "Magari con la v4.0.0 si sistemerà", ho pensato invano...
Quella mattina però, invece, mi sono messa con lo sforzo di fare prove varie e un minimo di ricerca in più, capendo quindi che il problema fosse nel frontend, e che invece sul backend fosse tutto a posto.
Nello specifico, il problema si verifica sul tema Persona, che è ufficiale, ma non il predefinito di NodeBB, e che quindi riceve molto meno amore, come altri problemi passati hanno già dimostrato.
Di conseguenza, oltre a creare la issue GitHub (che chi vuole sfogliare, per rendersi conto della pazzia di questo problema, trova in fondo al post), ho messo in piedi una lezza soluzione, usando del JavaScript che aggiunge un bottone alternativo (molto brutto!) alle pagine del profilo degli utenti remoti, che al click usa del codice suo (separato) per fare follow o unfollow.
Non funziona nemmeno molto bene, richiedendo che la pagina sia automaticamente ricaricata una volta per registrare le azioni, e se una richiesta di follow è accodata e non immediatamente onorata (per esempio, nel caso si vogliano seguire profili privati, che di per sé nemmeno sono indicati come tale nell'interfaccia del forum) non si riesce a capire il motivo per cui, anche cliccando all'infinito, lo stato di following non cambi... ma funziona.
[image: 1738253708240-peek-2025-01-28-18-03.gif]
Ormai, per l'appunto, questo coso è bello che inutile sia per noi, che per altri amministratori di forum NodeBB... ma, ad ogni modo, ecco il codice JavaScript personalizzato che ho scritto per avere questo abominio, sia mai i posteri dovessero chiedermelo proprio il giorno successivo a quello in cui lo perderei altrimenti per sempre:
window.addEventListener('load', function(){
setInterval(function(){
var userQuery = ' body.page-user.template-account-profile main div#content div.account ';
var userContainer = document.querySelector(userQuery + ' div.profile.row ');
if (userContainer && !userContainer.querySelector('button.SpaccBBS-follow-fix')) {
var username = location.pathname.split('/').filter(function(el){return el}).slice(-1)[0];
if (!username.includes('@')) {
return;
}
var following = !!document.querySelector(userQuery + ' div.cover div.avatar-wrapper button.btn-morph.persona-fab.heart ');
userContainer.insertBefore(Object.assign(document.createElement('button'), {
className: "SpaccBBS-follow-fix",
textContent: "Fediverse " + (following ? 'Unfollow' : 'Follow'),
onclick: function(){
try {
fetch('/new/api/v3/users/' + encodeURIComponent(username) + '/follow', {
method: (following ? 'DELETE' : 'PUT'),
headers: { "x-csrf-token": config.csrf_token },
}).then(function(){
location.reload();
});
} catch(err) {
console.error(err);
alert(err);
}
}}), userContainer.children[0]);
}
}, INTERVAL);
});
Comunque: dato che il mio workaround ha tappato decentemente il buco — al punto che altri utenti che ci hanno avuto a che fare non hanno avuto particolare bisogno di delucidazioni sull'uso (ed è per questo che ho potuto permettermi di scrivere questo rapporto in ritardo) — non c'è già fretta di aggiornare la Spacc BBS alla v.4.0.1, e credo quindi che aspetteremo verso questo fine settimana per applicare le ulteriori migliorie rese disponibili. Magari, sperando che ne vengano risolte persino delle altre, nel frattempo!
https://github.com/NodeBB/NodeBB/issues/13084