Depurando a API de mudança de página após a migração

por favor, ajude a mover isto da área de personalização do administrador do tema para a aba js na interface de administração:

<script type="text/discourse-plugin" version="0.8.19">
api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});
</script>

Estou olhando o exemplo de

export default apiInitializer((api) => {
  // Seu código
});

e isso funcionou muito bem para coisas como api.renderInOutlet, mas este onPageChange não tem exemplos atualizados que eu possa encontrar.

E se você apenas movesse isto:

api.onPageChange(() => {
	if ( window.location.href === "https://apple.com/123" ) {
		window.location.replace( "https://dell.com/234" );
	}
});

para

?

ha. você está sendo sarcástico, certo? sim, eu tentei isso imediatamente. falhou.

o que funcionou foi:

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url é tipicamente o caminho
// mas em alguns contextos pode ser uma URL completa, então lidamos com ambos.
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

Minhas desculpas. Eu entendi mal a sua pergunta.

Estou curioso - quais são essas situações? Eu nunca vi o https na url antes, porque, se não me engano, onPageChange é para os caminhos do Ember.

1 curtida

Olá, apenas como organização, movi isto do tópico original das notas de lançamento para um novo tópico para manter o tópico um pouco mais organizado e melhorar a visibilidade. Boa sorte :+1:

No entanto, notei no seu exemplo posterior que você não está mais verificando window.location.href. Esse é o problema?