Bizarre bug avec discourse-assign

Nous avons ce sujet aléatoire sur notre forum qui est devenu invisible. La suppression et la restauration du sujet via l’API n’ont eu aucun effet. Il semble que discourse-assign provoque un échec de chargement, car il se charge parfaitement lorsque le JS du plugin est désactivé en mode sans échec.
Vous pouvez trouver ce post buggé ici :

Voici une trace de la pile pour l’une des erreurs que nous obtenons lors de l’ouverture du sujet :

Cannot read properties of undefined (reading 'includes')
at n.<anonymous> (https://amcforum.wiki/assets/plugins/discourse-assign-e7635afd56f3ebe38bb2866d6121e1e726de50fbfc472646a6e738a3d44b3930.js:208:1008)
at https://amcforum.wiki/assets/discourse-12f38708c935010f61959d1ee5b74a9770c91ed393b88e3a7a5fe0a3de467a89.js:9931:74
at Array.forEach (<anonymous>)
at n.buildClasses (https://amcforum.wiki/assets/discourse-12f38708c935010f61959d1ee5b74a9770c91ed393b88e3a7a5fe0a3de467a89.js:9931:51)
at n.draw (https://amcforum.wiki/assets/discourse-12f38708c935010f61959d1ee5b74a9770c91ed393b88e3a7a5fe0a3de467a89.js:10348:34)
at n.render (https://amcforum.wiki/assets/discourse-12f38708c935010f61959d1ee5b74a9770c91ed393b88e3a7a5fe0a3de467a89.js:10324:54)
at a (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:331:20)
at e.exports (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:333:34)
at e (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:337:6)
at Object.e [as render] (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:342:48)
at https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:976:62
at e.exports (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:977:40)
at u (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:952:8)
at Object.l [as patch] (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:949:3)
at e.exports (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:981:29)
at u (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:952:8)
at Object.l [as patch] (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:949:3)
at e (https://amcforum.wiki/assets/chunk.660.cfa44cc656d26c5d04fa-3aa2531cc98e968234ee473ed8fc2ef14895f4ba22e888d7d542e7d3620f8056.js:953:114)
at e.rerenderWidget (https://amcforum.wiki/assets/discourse-12f38708c935010f61959d1ee5b74a9770c91ed393b88e3a7a5fe0a3de467a89.js:1844:163)
at p.invoke (https://amcforum.wiki/assets/vendor-d19c5d3106737be843b2f1f98da81f661a0e985585b4a1fd14cab77cbfa60e37.js:4339:182)
at p.flush (https://amcforum.wiki/assets/vendor-d19c5d3106737be843b2f1f98da81f661a0e985585b4a1fd14cab77cbfa60e37.js:4331:141)
at h.flush (https://amcforum.wiki/assets/vendor-d19c5d3106737be843b2f1f98da81f661a0e985585b4a1fd14cab77cbfa60e37.js:4346:207)
at q._end (https://amcforum.wiki/assets/vendor-d19c5d3106737be843b2f1f98da81f661a0e985585b4a1fd14cab77cbfa60e37.js:4410:9)
at _boundAutorunEnd (https://amcforum.wiki/assets/vendor-d19c5d3106737be843b2f1f98da81f661a0e985585b4a1fd14cab77cbfa60e37.js:4358:595)
3 « J'aime »

oui, la console affiche des erreurs ici.

3 « J'aime »

C’est une petite action sans code d’action !

Vous pouvez résoudre ce problème en utilisant la console, entrez dans le conteneur, trouvez les petites actions sur le sujet, l’une d’elles n’a pas de code d’action.

Nous devrions probablement ajouter une validation SQL pour garantir que cela est impossible.

3 « J'aime »

Je pense que ceux-ci peuvent être créés à l’aide de l’API (nous avons un composant de thème qui en crée un), devrons-nous exécuter manuellement une sorte de migration de base de données ?

1 « J'aime »

Voici un exemple d’un autre créé à l’aide de notre composant de thème :

1 « J'aime »

Il semble que 25 sujets différents aient des publications qui cassent discourse-assign, selon les résultats de cette requête SQL (en utilisant l’explorateur de données) :

SELECT id topic_id FROM topics topic WHERE topic.id IN (SELECT topic_id FROM posts WHERE post_type = 3 AND action_code IS NULL)
2 « J'aime »

Le bot GPT à la rescousse…

2 « J'aime »

Si c’est la vérification, pourquoi ne pas simplement ajouter !!post.actionCode au bloc if ?

1 « J'aime »

J’ai enfin pris le temps de m’en occuper et j’ai soumis un PR pour un changement :

3 « J'aime »