/**
* @fileoverview App Shell, Main Dashboard Layout, PWA Install Banner & Live Monitoring Console
* @module ui/shell-layout
* @description بناء الهيكل البصري للتطبيق، شريط الإحصائيات العلوي، شريط تثبيت تطبيق الهاتف PWA، لوحة الأوامر السريعة، وشاشة مراقبة الحملات الحية.
*/
(global => {
'use strict';
/**
* بناء الهيكل الخارجي وشريط الترويسة العلوي وشريط تثبيت الـ PWA
*/
function buildOuterWorkspaceLayout() {
if (document.getElementById('s7ihkirolg')) return;
const shell = document.createElement('div');
shell.className = 'irhpamtq54';
shell.style.cssText = 'max-width: min(1680px, 98vw); margin: 0 auto; width: 100%; direction: rtl; text-align: right; box-sizing: border-box;';
shell.innerHTML = `
تثبيت تطبيق فريتري على جهازك
ثبّت المنصة في قائمة تطبيقات هاتفك للوصول السريع بدون فتح المتصفح.
فيسبوك: 0
واتساب: 0
محفظة: $0.00
واتساب ويب غير متصل
افتح واتساب ويب واعمل ربط للجلسة عشان تقدر تبعت الرسائل بأمان وسلاسة.
`;
document.body.appendChild(shell);
bindPwaBannerEvents();
}
/**
* ربط أحداث شريط تثبيت الـ PWA والصلاحيات
*/
function bindPwaBannerEvents() {
const installBtnHeader = document.getElementById('fritree-pwa-install-btn');
const installBtnBanner = document.getElementById('btn-pwa-install-app');
const permsBtn = document.getElementById('btn-pwa-grant-perms');
const handleInstall = () => {
if (global.FritreePWABridge && typeof global.FritreePWABridge.promptInstall === 'function') {
global.FritreePWABridge.promptInstall();
}
};
if (installBtnHeader) installBtnHeader.onclick = handleInstall;
if (installBtnBanner) installBtnBanner.onclick = handleInstall;
if (permsBtn) {
permsBtn.onclick = async () => {
if (global.FritreePWABridge && typeof global.FritreePWABridge.requestAllPermissions === 'function') {
permsBtn.innerHTML = ' جاري التفعيل...';
const res = await global.FritreePWABridge.requestAllPermissions();
permsBtn.innerHTML = ' تم تفعيل الصلاحيات';
alert(`تم تفعيل الصلاحيات بنجاح:\n- الإشعارات: ${res.notifications ? 'مفعلة ✔' : 'مرفوضة'}\n- منع إغلاق الشاشة: ${res.wakeLock ? 'مفعل ✔' : 'غير مدعوم'}`);
}
};
}
}
/**
* بناء شاشة لوحة المعلومات والوصول السريع (Home Hub)
*/
function buildDashboardPane() {
if (document.getElementById('h7qak5tprs')) return;
const pane = document.createElement('section');
pane.className = 'rjiai07g77 vn5qn7dmpk';
pane.id = 'h7qak5tprs';
pane.innerHTML = `
مركز الأوامر والوصول السريع المباشر
ادخل على أي قسم أو أداة بضغطة زر واحدة بس!
محرك التخفي ومحاكاة السلوك البشري
دروع التمويه متفعلة لحماية حسابك من الحظر أوتوماتيك.
التحديات اليومية وترقية المستوى (XP)
شغل حملاتك عشان تجمع نقاط خبرة وترقي حسابك وتاخد أرصدة شحن مجانية فوراً!
`;
const host = document.getElementById('fritree-dynamic-panes-host') || document.getElementById('s7ihkirolg');
if (host) {
host.appendChild(pane);
}
}
/**
* بناء شاشة مراقبة الحملات المباشرة والأداء والـ Terminal
*/
function buildLiveMonitoringConsole() {
const contentArea = document.getElementById('s7ihkirolg');
if (!contentArea || document.getElementById('cxyr0eirov')) return;
const processPanel = document.createElement('div');
processPanel.className = 'd5tp7way8h zcjbe1otmg';
processPanel.id = 'cxyr0eirov';
processPanel.style.cssText = 'margin-top: 14px; padding: clamp(14px, 1.6vw, 22px); border-radius: var(--radius-xl); border: 1px solid var(--border); direction: rtl; text-align: right; background: var(--bg-card); width: 100%; box-sizing: border-box;';
processPanel.innerHTML = `
شاشة متابعة الحملات المباشرة والأداء
00:00:00
وقت النشر الفعلي
00:00:00
أوقات الانتظار والتبريد
60 ثانية
متوسط فترة التبريد
معدل تقدم إرسال حملة فيسبوك النشطة:
0%
معدل تقدم إرسال حملة الواتساب النشطة:
0%
`;
contentArea.appendChild(processPanel);
const logsGrid = document.createElement('div');
logsGrid.className = 'xd506q5mar zcjbe1otmg';
logsGrid.style.cssText = 'grid-template-columns: repeat(auto-fit, minmax(clamp(280px, 28vw, 420px), 1fr)); gap: 12px; margin-top: 12px; direction: rtl; text-align: right; width: 100%; box-sizing: border-box;';
logsGrid.innerHTML = `
سجل الأوامر المباشر ورصد الـ XP
[00:00:00] تم تشغيل بيئة العمل ورادار الأمان والتحديث المباشر بنجاح!
سجل النشر المباشر وروابط الإثبات
| الوجهة المستهدفة |
الحالة |
الرابط / الخطأ |
| روابط النشر والرسائل الناجحة ستظهر هنا فور إطلاق الحملة. |
`;
contentArea.appendChild(logsGrid);
const avgCard = document.getElementById('h4we1yzu71');
if (avgCard) {
avgCard.onclick = () => {
if (global.FritreePacingUI && typeof global.FritreePacingUI.openModal === 'function') {
global.FritreePacingUI.openModal('fb');
}
};
}
}
/**
* تحديث قيم الأرصدة في شريط الترويسة ولوحة التحكم
*/
async function updatePointsHeaderAndWidgets() {
if (!global.FritreeAppState) return;
await global.FritreeAppState.loadDashboardState();
const state = global.FritreeAppState.getState();
const badgeBalance = document.getElementById('q20kc2pzo4');
const modalBalance = document.getElementById('qtjpvw26cb');
const storeBalance = document.getElementById('u39mvrlgpk');
const modalFbPoints = document.getElementById('unaqtenmf0');
const modalWaPoints = document.getElementById('not0uqicjk');
const fbB = document.getElementById('n2jtnhukcl');
const waB = document.getElementById('b8bid195p8');
const walletUsd = document.getElementById('urp3goak31');
const walletFb = document.getElementById('jsfgartkej');
const walletWa = document.getElementById('qul9lan6tq');
if (badgeBalance) badgeBalance.textContent = state.usdPoints.toFixed(2);
if (modalBalance) modalBalance.textContent = state.usdPoints.toFixed(2);
if (storeBalance) storeBalance.textContent = state.usdPoints.toFixed(2);
if (modalFbPoints) modalFbPoints.textContent = state.fbPoints.toLocaleString('en-US');
if (modalWaPoints) modalWaPoints.textContent = state.waPoints.toLocaleString('en-US');
if (fbB) fbB.textContent = state.fbPoints.toLocaleString('en-US');
if (waB) waB.textContent = state.waPoints.toLocaleString('en-US');
if (walletUsd) walletUsd.textContent = state.usdPoints.toFixed(2);
if (walletFb) walletFb.textContent = state.fbPoints.toLocaleString('en-US');
if (walletWa) walletWa.textContent = state.waPoints.toLocaleString('en-US');
if (global.FritreeStorage) {
const fbIntervals = await global.FritreeStorage.get('local_sleep_intervals_fb', null);
const avgBadge = document.getElementById('e8fmmjhyng');
if (avgBadge && fbIntervals) {
let display = '60 ثانية';
if (fbIntervals.mode === 'continuous' || fbIntervals.mode === 'random') {
const avg = Math.round(((fbIntervals.min || 45) + (fbIntervals.max || 120)) / 2);
display = `${avg} ثانية (~${fbIntervals.min}-${fbIntervals.max} ث)`;
} else if (fbIntervals.mode === 'fixed') {
display = `${fbIntervals.fixed || 60} ثانية (ثابت)`;
} else if (fbIntervals.mode === 'burst') {
display = `دفعة (${fbIntervals.burstCount} عمليات)`;
}
avgBadge.innerHTML = ` ${display}`;
}
}
}
/**
* تصدير وحدة واجهة الهيكل العام
*/
global.FritreeShellLayout = {
buildOuterLayout: buildOuterWorkspaceLayout,
buildDashboard: buildDashboardPane,
buildMonitoringConsole: buildLiveMonitoringConsole,
updatePointsUI: updatePointsHeaderAndWidgets,
updateAccountUI: updatePointsHeaderAndWidgets
};
global.FritreeDashboard = global.FritreeDashboard || {};
global.FritreeDashboard.updateAccountUI = updatePointsHeaderAndWidgets;
global.FritreeDashboard.updatePointsUI = updatePointsHeaderAndWidgets;
if (typeof document !== 'undefined') {
buildOuterWorkspaceLayout();
buildDashboardPane();
buildLiveMonitoringConsole();
}
})(typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this);