كيفية تغيير الصفحة الرئيسية بعد تسجيل الدخول قبل تحميل الصفحة الأولى

لدي مكون صفحة هبوط على https://ejopa.discourse.group/

إنه يعمل بشكل رائع. أحتاج إلى ألا يظهر للمستخدمين المسجلين. لدي هذا الكود، الذي يحدد الصفحة الرئيسية في المُهيئ:

export default apiInitializer((api) => {
  const siteSettings = api.container.lookup("service:site-settings");
  const topMenu = siteSettings.top_menu || ""; // الحماية ضد القيمة غير المعرفة
  const globalDefaultHomepage = topMenu.split("|")[0].trim();
  const currentUser = api.getCurrentUser();

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

إنه يعمل بشكل رائع، باستثناء المرة الأولى التي يسجلون فيها الدخول. يتم إعادة توجيههم إلى /custom – إذا نقروا على الأيقونة، يذهبون إلى المكان الصحيح، ولكن ليس عند التحميل الأول..

أحتاج إلى القيام بـ . . . شيء ما . . . لإعادة توجيههم إلى الصفحة الرئيسية الصحيحة عند تسجيل الدخول.

اقترح الذكاء الاصطناعي شيئًا كهذا، والذي لا يبدو أنه يعمل

      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 || ""; // الحماية ضد القيمة غير المعرفة
  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);
});

أخشى أن هذا هو أفضل ما يمكنني فعله. هل أنا مخطئ؟

[اقتباس=“pfaffman، المنشور: 1، الموضوع: 369042”]يعمل بشكل رائع، باستثناء المرة الأولى التي يسجلون فيها الدخول.[/اقتباس]
أتساءل عما إذا كان هذا يمكن أن يكون بسبب إعداد redirect_users_to_top_page، لأن هذا شيء يعيد توجيه المستخدم أيضًا في الزيارة الأولى. ولكن نظرًا لأنك تنتهي في /custom وليس في /top، فربما لا يكون هذا هو الحال.

[اقتباس=“Moin, المشاركة: 2، الموضوع: 369042”]
redirect_users_to_top_page
[/اقتباس]

حاولت العثور على ذلك ولكن لم أستطع تذكر ما كان اسمه!

[اقتباس=“Moin, المشاركة: 2، الموضوع: 369042”]
نظرًا لأنك تنتهي عند /custom وليس عند /top، فربما لا يكون هذا هو الحال.
[/اقتباس]

صحيح.

وأيضًا “إعادة توجيه المستخدمين الجدد والغائبين لفترة طويلة تلقائيًا”، ونحن لسنا جددًا ولا غائبين لفترة طويلة. . .

شكرا جزيلا!

إعجاب واحد (1)