Aquí tienes algunos puntos:
-
La configuración del sitio se ha trasladado a un servicio:
const siteSettings = container.lookup('service:site-settings'); if (!siteSettings.docuss_enabled) { return; } -
location:discourse-location→location:history -
afterRender().then(() => onAfterRender(container));
afterRenderes un decorador que pones encima de un método en una clase de componente; no debes usarlo directamente como una función.
Creo que quieres (no parece ser necesario), posiblemente:import { schedule } from '@ember/runloop'; schedule("afterRender", () => onAfterRender(container)) -
Tienes una gran parte de código fuera de la función
composeStateChanged, parece.
Además, puedes usar el servicio de enrutador aquí:container.lookup('router:main').transitionTo(path);→this.router.transitionTo(path); -
La cabecera se ha modernizado. La personalización en el widget
home-logoestá obsoleta en tu contexto. Más información aquí: Upcoming Header Changes - Preparing Themes and Plugins.
En tu caso, necesitarás la configuraciónglimmer header modeenautooenabled. Luego, puedes usar un outlet de plugin para reemplazar el contenido:api.renderInOutlet("home-logo-contents", `<template> <HomeLogoContents @logoSmallUrl={{container.dcsHeaderLogo._smallLogoUrl}} @logoUrl={{container.dcsHeaderLogo._logoUrl}} @minimized={{@outletArgs.minimized}} @mobileLogoUrl={{container.dcsHeaderLogo._mobileLogoUrl}} @showMobileLogo={{@outletArgs.showMobileLogo}} @title={{@outletArgs.title}} /> </template>`);Nota: para usar la sintaxis de plantilla
glimmer<template>, asegúrate de renombrar la extensión del archivo a.gjs.
También puedes usar esta forma:api.registerValueTransformer("home-logo-image-url", (transformer) => { let url = transformer.value; if (transformer.context.name === 'logo') { url = container.dcsHeaderLogo._logoUrl; } else if (transformer.context.name === 'logo_small') { url = container.dcsHeaderLogo._smallLogoUrl; } else if (transformer.context.name === 'logo_mobile') { url = container.dcsHeaderLogo._mobileLogoUrl; } return url; });Para cambiar la URL:
api.registerValueTransformer("home-logo-href", () => container.dcsHeaderLogo._href);Nota: Creo que el código para volver a renderizar en
setLogono funcionará en un componente glimmer.Nota después de probar: Sin embargo, ninguna de las soluciones funcionará porque la cabecera se renderiza antes de que puedas obtener los logos del JSON. No tengo una solución lista para eso. No estoy seguro de si hay una mejor manera: movería la carga del JSON a un servicio y rastrearía el resultado. Luego, usaría el outlet del plugin anterior con un componente glimmer. De esta manera, basándose en una variable de seguimiento, puedes activar automáticamente una actualización en el componente.
Con eso, funciona de alguna manera. Todavía no hay piezas que funcionen como el compositor. No lo he mirado muy a fondo. Como mínimo, ya no hay errores bloqueantes.

Espero que esto ayude.