¿Cómo cambiar la página de inicio después de iniciar sesión antes de que se cargue la primera página?

Tengo un componente de tema de página de destino en https://ejopa.discourse.group/

Funciona muy bien. Necesito que no se muestre para los usuarios que han iniciado sesión. Tengo este código, que establece la página de inicio en el inicializador:

export default apiInitializer((api) => {
  const siteSettings = api.container.lookup("service:site-settings");
  const topMenu = siteSettings.top_menu || ""; // proteger contra undefined
  const globalDefaultHomepage = topMenu.split("|")[0].trim();
  const currentUser = api.getCurrentUser();

  if (currentUser && defaultHomepage() === "custom") {
    setDefaultHomepage(globalDefaultHomepage);
  }
  api.renderInOutlet("custom-homepage", LandingPage);
});

Funciona muy bien, EXCEPTO la primera vez que inician sesión. Se les redirige a /custom – si hacen clic en el icono, van al lugar correcto, pero no en la primera carga.

Necesito hacer . . . algo . . . para redirigirlos a la página de inicio correcta cuando inician sesión.

Una IA sugirió algo como esto, que no parece funcionar

      api.onAppEvent('application:after-login', afterLoginHandler);

¡EDITAR! Casi lo tengo, pero parpadea la página de destino después de iniciar sesión

import { apiInitializer } from "discourse/lib/api";
import { defaultHomepage, setDefaultHomepage } from "discourse/lib/utilities";
import LandingPage from "../components/landing-page";

export default apiInitializer((api) => {
  const siteSettings = api.container.lookup("service:site-settings");
  const topMenu = siteSettings.top_menu || ""; // proteger contra undefined
  const globalDefaultHomepage = topMenu.split("|")[0].trim();
  const currentUser = api.getCurrentUser();

  api.onPageChange((url) => {
    const isCustom = url === "/custom";
    const router = api.container.lookup("service:router");
    const currentUser = api.container.lookup("service:current-user");
    if (currentUser && isCustom) {
      router.transitionTo("discovery." + defaultHomepage());
    }
  });

  if (currentUser && defaultHomepage() === "custom") {
    setDefaultHomepage(globalDefaultHomepage);
  }
  api.renderInOutlet("custom-homepage", LandingPage);
});

Me temo que esto es lo mejor que puedo hacer. ¿Estoy equivocado?

[cita=“pfaffman, post:1, topic:369042”]Funciona de maravilla, EXCEPTO la primera vez que inician sesión.[/cita]
Me pregunto si esto podría deberse a la configuración redirect_users_to_top_page, porque eso también redirige al usuario en la primera visita. Pero como terminas en /custom y no en /top, probablemente este no sea el caso.

¡Intenté encontrar eso pero no recordaba cómo se llamaba!

Correcto.

Y también “Redirigir automáticamente a los usuarios nuevos y ausentes durante mucho tiempo”, y nosotros no somos ni nuevos ni ausentes durante mucho tiempo. . .

¡Muchas gracias!

1 me gusta