Discourse API Ottieni l'argomento corrente

CIAO!

Vedo che il plug-in dello script API di Discourse può ottenere l’utente corrente:

<script type="text/discourse-plugin" version="0.8.18">
    if(api.getCurrentUser() != null) {
        $("#logged-in-user").text(" " + api.getCurrentUser().username);
    }
</script>

Esiste un comando simile per ottenere l’argomento corrente? Il mio caso d’uso è modificare l’URL del pulsante di reindirizzamento alla fine di un post per collegarlo a un messaggio privato precompilato all’autore originale. Per trovare il nome utente dell’autore originale, sembra che dovrei prima ottenere l’ID dell’argomento, quindi interrogare l’autore originale tramite "/t/<TOPIC_ID>.json"?

Il plug-in del pulsante ha l’<ID_ARGOMENTO> integrato, ma non sono sicuro di come possa essere fatto utilizzando JavaScript in Amministrazione > Personalizzazione. Grazie!

Non sono sicuro che questo sia l’approccio migliore, ma è possibile ottenere il nome utente del creatore del argomento in questo modo:

const controller = Discourse.__container__.lookup("controller:topic")
const username = controller.get("model.details.created_by.username")

Questo non funziona direttamente nel tag <script>, probabilmente vorrai utilizzarlo su un api.onPageChange o su un altro evento (in un test rapido ha funzionato anche con un setTimeout di 0ms, ma non so se ci siano effetti collaterali).

2 Mi Piace