Riclassificazione come bug.
Ho aggiunto un console.log nel codice dell’API del plugin app/assets/javascripts/discourse/app/lib/plugin-api.js in modo che registri ogni volta che modifyClass viene chiamato.
Ho rimosso tutti i plugin esterni per assicurarmi che non ci fosse un conflitto da qualche parte.
Riproduzione:
-
crea un forum vuoto su
stable(quindi senza Ember CLI). Questo non funziona nemmeno su tests-passed (senza Ember CLI). Non l’ho testato con Ember CLI. -
aggiungi un componente tema con questo in Common - Head
#1 Funzionante
<script type="text/discourse-plugin" version="0.1">
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
</script>
-
carica la home page
-
la console mostra
modifyClass called for model:user _application-08d9058ddd37ba80992f770509f4919ad0738a17f14fb85167b1dc1f32f8b56e.js:23490:16 Object { pluginId: "test-tc", testFunction: testFunction() } -
inserisci
Discourse.currentUser.testFunction()nella console -
viene stampato “1”
#2 Fallimento
- Vai a un argomento, ad esempio ‘Welcome to Discourse’ e ricarica la pagina
- la console mostra gli stessi log di “modifyClass called”
- inserisci
Discourse.currentUser.testFunction()nella console - viene stampato
Uncaught TypeError: Discourse.currentUser.testFunction is not a function
#3 Fallimento con avviso
- Aggiungi una singola riga in cima al componente tema in modo che appaia così:
<script type="text/discourse-plugin" version="0.1">
const userModel = api.container.lookup("model:user");
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
</script>
- Vai a un argomento, ad esempio ‘Welcome to Discourse’ e ricarica la pagina
- la console mostra gli stessi log di “modifyClass called”
- la console mostra un avviso
\"model:user\" was already cached in the container. Changes won't be applied. - inserisci
Discourse.currentUser.testFunction()nella console - viene stampato
Uncaught TypeError: Discourse.currentUser.testFunction is not a function
#4 Funzionante
- Sposta la riga di lookup in fondo al componente tema in modo che appaia così:
<script type="text/discourse-plugin" version="0.1">
api.modifyClass('model:user', {
pluginId: 'test-tc',
testFunction: function() {
return 1;
}
});
const userModel = api.container.lookup("model:user");
</script>
- Vai a un argomento, ad esempio ‘Welcome to Discourse’ e ricarica la pagina
- la console mostra gli stessi log di “modifyClass called”
- inserisci
Discourse.currentUser.testFunction()nella console - viene stampato “1”
