لدي مكون صفحة هبوط على 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);
});
أخشى أن هذا هو أفضل ما يمكنني فعله. هل أنا مخطئ؟