ログイン後、最初のページが読み込まれる前にホームページを変更する方法

ランディングページテーマコンポーネントを https://ejopa.discourse.group/ で使用しています。

これはうまく機能していますが、ログイン中のユーザーには表示されないようにしたいです。初期化子でホームページを設定するコードは以下の通りです。

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

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

これはうまくいっていますが、初めてログインしたときだけ問題があります。彼らは /custom にリダイレクトされます。アイコンをクリックすると正しい場所に移動しますが、初回ロード時にはそうなりません。

ログイン時に正しいホームページにリダイレクトさせるために、何かを行う必要があります。

AI は次のようなものを提案しましたが、機能しないようです。

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

編集!ほぼ完了しましたが、ログイン後にランディングページが一瞬表示されます。

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

これが私の最善の努力です。間違っていますか?

redirect_users_to_top_page 設定が原因ではないかと疑問に思いますが、これも初回訪問時にユーザーをリダイレクトするものです。しかし、あなたは /top ではなく /custom で終わるので、これはおそらく関係ないでしょう。

それを見つけようとしたのですが、名前を思い出せませんでした!

その通りです。

それに、「新規ユーザーや長期間不在だったユーザーを自動的にリダイレクトする」という設定も、私たちは新規でも長期間不在でもありません。

どうもありがとうございました!

「いいね!」 1