إضافة تحويل الألعاب إلى النقاط في رأس الصفحة

إنها طريقة مؤقتة ولكنها مفيدة. ربما يريدون تحسينها، أترك الكود هنا

موقع الاختبار: https://trgala.com

Js

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("0.8", (api) => {
    api.onPageChange(() => {
        const currentUser = api.getCurrentUser();
        if (!currentUser) {
            console.warn("المستخدم غير مسجل الدخول");
            return;
        }

        fetch(`/u/${currentUser.username}.json`)
            .then(response => response.json())
            .then(data => {
                console.log("بيانات الألعاب:", data);
                let score = data?.user?.gamification_score ?? 0;

                // إذا كان صندوق النقاط موجودًا بالفعل، فلا تضفه مرة أخرى
                if (document.querySelector("#gamification-score")) return;

                // ابحث عن حاوية .contents في الرأس
                let headerContents = document.querySelector(".d-header>.wrap .contents");
                if (headerContents) {
                    // أنشئ حاوية النقاط
                    let scoreContainer = document.createElement("a");
                    scoreContainer.id = "gamification-score";
                    scoreContainer.classList.add("gamification-box");
                    scoreContainer.href = "website";
                    scoreContainer.target = "_blank"; // افتح في علامة تبويب جديدة

                    // أيقونة ذهبية
                    let icon = document.createElement("span");
                    icon.innerText = "T";
                    icon.classList.add("gold-icon");

                    // نص النقاط
                    let scoreText = document.createElement("span");
                    scoreText.innerText = `${score}`;
                    scoreText.classList.add("gold-text");

                    // أضف الأيقونة والنص إلى الصندوق
                    scoreContainer.appendChild(icon);
                    scoreContainer.appendChild(scoreText);

                    // أضف الصندوق إلى الرأس
                    headerContents.appendChild(scoreContainer);
                }
            })
            .catch(error => console.error("خطأ في جلب نقاط الألعاب:", error));
    });
});
4 إعجابات