Ich habe eine Landingpage-Komponente unter https://ejopa.discourse.group/
Sie funktioniert gut. Ich möchte, dass sie für angemeldete Benutzer nicht angezeigt wird. Ich habe diesen Code, der die Startseite in der Initialisierung festlegt:
export default apiInitializer((api) => {
const siteSettings = api.container.lookup("service:site-settings");
const topMenu = siteSettings.top_menu || ""; // Schutz vor undefiniert
const globalDefaultHomepage = topMenu.split("|")[0].trim();
const currentUser = api.getCurrentUser();
if (currentUser && defaultHomepage() === "custom") {
setDefaultHomepage(globalDefaultHomepage);
}
api.renderInOutlet("custom-homepage", LandingPage);
});
Das funktioniert gut, AUSSER beim ersten Login. Sie werden zu /custom weitergeleitet. Wenn sie auf das Symbol klicken, gelangen sie an die richtige Stelle, aber nicht beim ersten Laden.
Ich muss etwas tun, um sie beim Login zur richtigen Startseite weiterzuleiten.
Die KI schlug etwas wie das hier vor, was anscheinend nicht funktioniert:
api.onAppEvent('application:after-login', afterLoginHandler);
EDIT! Fast geschafft, aber die Landingpage flackert nach dem Login auf
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 || ""; // Schutz vor undefiniert
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);
});
Ich fürchte, das ist das Beste, was ich tun kann. Liege ich falsch?