Come cambiare la homepage dopo il login prima che si carichi la prima pagina

Ho un componente tema della landing page su https://ejopa.discourse.group/

Funziona benissimo. Ho bisogno che non venga mostrato agli utenti che hanno effettuato l’accesso. Ho questo codice, che imposta la homepage nell’initializer:

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

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

Funziona benissimo, TRANNE che la prima volta che accedono. Vengono reindirizzati a /custom – se cliccano sull’icona, vanno nel posto giusto, ma non al primo caricamento..

Ho bisogno di fare . . . qualcosa . . . per reindirizzarli alla homepage corretta quando accedono.

L’AI ha suggerito qualcosa del genere, che non sembra funzionare

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

EDIT! Quasi fatto, ma lampeggia la landing page dopo il login

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 || ""; // protegge da 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);
});

Temo che questo sia il massimo che posso fare. Mi sbaglio?

Mi chiedo se ciò possa essere dovuto all’impostazione redirect_users_to_top_page, poiché anche quella reindirizza l’utente alla prima visita. Ma dato che finisci su /custom e non su /top, probabilmente non è questo il caso.

Ho provato a trovarlo ma non ricordavo come si chiamasse!

Giusto.

E anche “Reindirizza automaticamente gli utenti nuovi e assenti da molto tempo”, e noi non siamo né nuovi né assenti da molto tempo…

Grazie mille!

1 Mi Piace