Depurando la API de cambio de página después de la migración

por favor, ayúdame a mover esto desde el área en la personalización de administración del tema a la pestaña js en la interfaz de administración:

<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>

Estoy viendo el ejemplo de

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

y esto ha funcionado muy bien para cosas como api.renderInOutlet, pero este onPageChange no tiene ejemplos actualizados que haya podido encontrar.

¿Qué pasaría si simplemente movieras esto:

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

a

?

ja. ¿Estás siendo sarcástico? Sí, lo intenté inmediatamente. Falló.

esto es lo que funcionó:

import { apiInitializer } from "discourse/lib/api";
export default apiInitializer("1.0", (api) => {
api.onPageChange((url) => {
// url es típicamente la ruta
// pero en algunos contextos puede ser una URL completa, así que manejamos ambos.
const path = url?.startsWith("http") ? new URL(url).pathname : url;
if (path === "/123") {
      window.location.replace("https://dell.com/234");
}
});

Mis disculpas. Malinterpreté tu pregunta.

Tengo curiosidad, ¿cuáles son estas situaciones? Nunca he visto el https en la URL antes, porque si no recuerdo mal, onPageChange es para las rutas de Ember.

1 me gusta

Hola, solo como organización, moví esto del hilo original de notas de la versión a un nuevo tema para mantener el hilo un poco más ordenado y mejorar la visibilidad. ¡Buena suerte! :+1:

Sin embargo, noté en tu ejemplo posterior que ya no estás comprobando window.location.href. ¿Ese es el problema?