/** * @fileoverview Points Store UI, Interactive Custom Exchange & Promo Packages Renderer * @module ui/store-ui * @description بناء واجهة متجر النقاط، حاسبة استبدال الرصيد التفاعلية، وعرض بطاقات باقات الشحن المعتمدة. */ (global => { 'use strict'; /** * بناء الهيكل البصري لمتجر النقاط بالـ DOM */ const buildStorePane = () => { const sidebar = document.getElementById('bmh59axx92'); const contentArea = document.getElementById('s7ihkirolg'); if (!sidebar || !contentArea) return; if (!sidebar.querySelector('[data-target="dc1z57si9s"]')) { const navItem = document.createElement('div'); navItem.className = 'f2rj8bz2yt'; navItem.setAttribute('data-target', 'dc1z57si9s'); navItem.innerHTML = ' متجر النقاط'; sidebar.appendChild(navItem); navItem.addEventListener('click', () => { window.location.hash = 'dc1z57si9s'; }); } let pane = document.getElementById('dc1z57si9s'); if (pane) return; pane = document.createElement('section'); pane.className = 'rjiai07g77'; pane.id = 'dc1z57si9s'; pane.innerHTML = `

متجر النقاط والأرصدة الترويجية

نظام التشفير والتحقق الذاتي يضمن أمان وسلامة رصيدك ومحفظتك الموحدة.

رصيدك المتاح بالمحفظة $0.00

حاسبة استبدال النقاط المباشرة

(من $1 لـ $10,000)
فيسبوك: 50% ($500) واتساب: 50% ($500)
حرك السلايدر لتقسيم المبلغ بين المنصتين بحرية
التكلفة الإجمالية المطلوب خصمها: $1,000.00
عمولة التحويل: تسعير مباشر
إجمالي نقاط فيسبوك الصافية: 1,000,000 نقطة
إجمالي نقاط واتساب الصافية: 500,000 نقطة

باقات الشحن الترويجية المعتمدة

باقات شحن سريعة لفيسبوك وواتساب بقيم $500 و $1,000 وبسعر الشراء المباشر
هل تحتاج شحن محفظتك بالدولار أو عبر إنستاباي وفودافون كاش؟ تواصل مع الدعم الفني لشحن حسابك وتفعيل نقاطك في ثوانٍ.
`; contentArea.appendChild(pane); }; /** * تحديث حاسبة النقاط التفاعلية */ const updateInteractiveCalculator = () => { const config = global.FritreeStoreConfig; if (!config) return { totalCostUSD: 0, finalFbPoints: 0, finalWaPoints: 0 }; const modeByUsdBtn = document.getElementById('e1kue4bxi8'); const isUsdMode = modeByUsdBtn ? modeByUsdBtn.classList.contains('vn5qn7dmpk') : true; let totalCostUSD = 0; let baseFbPoints = 0; let baseWaPoints = 0; if (isUsdMode) { const usdInp = document.getElementById('jkfrigkx79'); const usdSlider = document.getElementById('d59w7te1vj'); const splitSlider = document.getElementById('e89vbjxky3'); let usdVal = parseFloat(usdInp?.value) || 0.01; if (usdVal < 0.01) usdVal = 0.01; if (usdVal > 10000) usdVal = 10000; totalCostUSD = usdVal; if (usdSlider) usdSlider.value = Math.min(10000, usdVal); const fbPct = parseInt(splitSlider?.value || '50', 10); const waPct = 100 - fbPct; const fbUsd = (totalCostUSD * fbPct) / 100; const waUsd = (totalCostUSD * waPct) / 100; const lblFbPct = document.getElementById('qlifseac5g'); const lblFbUsd = document.getElementById('kh1jaojo84'); const lblWaPct = document.getElementById('vsgn1osooh'); const lblWaUsd = document.getElementById('fjb9lf7u6j'); if (lblFbPct) lblFbPct.textContent = fbPct.toLocaleString('en-US'); if (lblFbUsd) lblFbUsd.textContent = fbUsd.toFixed(2); if (lblWaPct) lblWaPct.textContent = waPct.toLocaleString('en-US'); if (lblWaUsd) lblWaUsd.textContent = waUsd.toFixed(2); baseFbPoints = Math.round(fbUsd * config.EXCHANGE_RATES.FB); baseWaPoints = Math.round(waUsd * config.EXCHANGE_RATES.WA); } else { const fbPtsInp = document.getElementById('ra4lnuh31g'); const waPtsInp = document.getElementById('obapd8lbcc'); baseFbPoints = Math.max(0, parseInt(fbPtsInp?.value, 10) || 0); baseWaPoints = Math.max(0, parseInt(waPtsInp?.value, 10) || 0); const fbCost = baseFbPoints / config.EXCHANGE_RATES.FB; const waCost = baseWaPoints / config.EXCHANGE_RATES.WA; totalCostUSD = fbCost + waCost; if (totalCostUSD > 10000) totalCostUSD = 10000; } const finalFbPoints = baseFbPoints; const finalWaPoints = baseWaPoints; const summaryCost = document.getElementById('xaaobpe28o'); const summaryBonusPct = document.getElementById('qtmqs3sswp'); const summaryFbTotal = document.getElementById('xl39vkuv1s'); const summaryWaTotal = document.getElementById('k7z19dhok1'); if (summaryCost) summaryCost.innerHTML = ` $${totalCostUSD.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`; if (summaryBonusPct) { summaryBonusPct.innerHTML = ` تسعير مباشر`; summaryBonusPct.style.color = "var(--text-muted)"; } if (summaryFbTotal) { summaryFbTotal.innerHTML = ` ${finalFbPoints.toLocaleString('en-US')} نقطة`; } if (summaryWaTotal) { summaryWaTotal.innerHTML = ` ${finalWaPoints.toLocaleString('en-US')} نقطة`; } return { totalCostUSD, finalFbPoints, finalWaPoints }; }; /** * تنفيذ شراء النقاط المخصصة من الحاسبة */ async function executeCustomCalculatorExchange() { const config = global.FritreeStoreConfig; const calcData = updateInteractiveCalculator(); const usdCost = calcData.totalCostUSD; if (usdCost < 0.01) { alert("تنبيه: الحد الأدنى للشراء هو $0.01 (1 سنت)!"); return; } if (usdCost > 10000.00) { alert("تنبيه: الحد الأقصى للشراء في المرة الواحدة هو $10,000.00 دولار!"); return; } const activeBalance = global.FritreeAppState ? global.FritreeAppState.getPoints() : 0.00; if (activeBalance < usdCost) { alert(`رصيد محفظتك المتاح ($${activeBalance.toFixed(2)}) غير كافٍ لإتمام الشراء بتكلفة $${usdCost.toFixed(2)}.\n\nيرجى شحن محفظتك أولاً بالدولار.`); return; } const fbPts = calcData.finalFbPoints; const waPts = calcData.finalWaPoints; let promptMsg = `تأكيد الشراء المباشر للنقاط:\n\nالتكلفة الإجمالية: $${usdCost.toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 })}\n`; if (fbPts > 0) promptMsg += `- فيسبوك: +${fbPts.toLocaleString('en-US')}\n`; if (waPts > 0) promptMsg += `- واتساب: +${waPts.toLocaleString('en-US')}\n`; promptMsg += `\nهل تريد تأكيد العملية والخصم من المحفظة؟`; if (confirm(promptMsg)) { const descDeduct = `شراء مباشر من المتجر عبر الحاسبة التفاعلية: -$${usdCost.toFixed(2)}`; const success = await global.FritreeAppState.deductPoints(usdCost, descDeduct); if (success) { const balanceAfterTx = activeBalance - usdCost; const computedSignature = await config.calculateExchangeSignature('combo', fbPts + waPts, usdCost, balanceAfterTx); if (global.FritreeStorage) { await global.FritreeStorage.set('last_exchange_receipt_sig', computedSignature); } if (fbPts > 0) { const descFb = `شحن نقاط فيسبوك من المتجر: +${fbPts.toLocaleString('en-US')}`; await global.FritreeAppState.addFbCards(fbPts, descFb); } if (waPts > 0) { const descWa = `شحن نقاط واتساب من المتجر: +${waPts.toLocaleString('en-US')}`; await global.FritreeAppState.addWaCards(waPts, descWa); } await global.FritreeAppState.saveAccountData(); if (global.FritreeShellLayout) global.FritreeShellLayout.updatePointsUI(); const successMsg = `تم الشراء بنجاح!\nتم شحن الأرصدة لمحفظتك الموحدة فوراً.`; alert(successMsg); if (typeof window.addLog === 'function') { window.addLog(successMsg, 'success'); } if (global.FritreeWallet && typeof global.FritreeWallet.renderLedgerTable === 'function') { await global.FritreeWallet.renderLedgerTable(); } } else { alert("خطأ: تعثر خصم الرصيد من المحفظة."); } } } /** * رسم بطاقات باقات الشحن الترويجية المعتمدة */ const renderAllPromoPackagesGrid = () => { const config = global.FritreeStoreConfig; const container = document.getElementById('cxvg048mcg'); if (!container || !config || !config.ALL_PROMO_PACKAGES) return; container.innerHTML = ''; config.ALL_PROMO_PACKAGES.forEach(pkg => { const card = document.createElement('div'); card.className = 'xs53x0rzq7 zcjbe1otmg'; card.style.cssText = ` background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 14px; display: flex; flex-direction: column; justify-content: space-between; text-align: right; direction: rtl; position: relative; box-shadow: var(--shadow-xs); box-sizing: border-box; `; const topRow = document.createElement('div'); topRow.style.cssText = 'display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px;'; topRow.innerHTML = ` ${pkg.name} ${pkg.badge} `; const midRow = document.createElement('div'); midRow.style.cssText = 'margin-bottom: 12px; text-align: right;'; midRow.innerHTML = `
$${pkg.cost.toLocaleString('en-US', { minimumFractionDigits: 2 })}
+${pkg.totalPoints.toLocaleString('en-US')} نقطة إرسال صافية ${pkg.desc} `; const buyBtn = document.createElement('button'); buyBtn.type = 'button'; buyBtn.className = 'itdnt14mss'; buyBtn.style.cssText = `width: 100%; padding: 8px; font-size: 11px; font-weight: 800; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; gap: 4px; cursor: pointer; min-height: 32px;`; buyBtn.innerHTML = ` شراء وتفعيل الحزمة الآن`; buyBtn.onclick = () => executeDirectPackagePurchase(pkg); card.appendChild(topRow); card.appendChild(midRow); card.appendChild(buyBtn); container.appendChild(card); }); }; /** * تنفيذ الشراء المباشر للباقة الترويجية * @param {Object} pkg */ async function executeDirectPackagePurchase(pkg) { if (!pkg) return; const config = global.FritreeStoreConfig; const usdCost = parseFloat(pkg.cost) || 0.00; const activeBalance = global.FritreeAppState ? global.FritreeAppState.getPoints() : 0.00; if (activeBalance < usdCost) { alert(`رصيد محفظتك المتاح ($${activeBalance.toFixed(2)}) غير كافٍ لشراء ${pkg.name} بتكلفة $${usdCost.toLocaleString('en-US')}.\n\nيرجى شحن محفظتك أولاً.`); return; } if (confirm(`تأكيد الشراء:\n\nهل أنت متأكد من خصم $${usdCost.toLocaleString('en-US')} من المحفظة لشراء "${pkg.name}" وإضافة +${pkg.totalPoints.toLocaleString('en-US')} نقطة لحسابك؟`)) { const descDeduct = `شراء وتفعيل حزمة [${pkg.name}]: -$${usdCost.toLocaleString('en-US')}`; const success = await global.FritreeAppState.deductPoints(usdCost, descDeduct); if (success) { const balanceAfterTx = activeBalance - usdCost; if (config && typeof config.calculateExchangeSignature === 'function') { const computedSignature = await config.calculateExchangeSignature(pkg.platform, pkg.totalPoints, usdCost, balanceAfterTx); if (global.FritreeStorage) { await global.FritreeStorage.set('last_exchange_receipt_sig', computedSignature); } } if (pkg.platform === 'fb') { const descFb = `شحن نقاط فيسبوك من حزمة [${pkg.name}]: +${pkg.totalPoints.toLocaleString('en-US')}`; await global.FritreeAppState.addFbCards(pkg.totalPoints, descFb); } else if (pkg.platform === 'wa') { const descWa = `شحن نقاط واتساب من حزمة [${pkg.name}]: +${pkg.totalPoints.toLocaleString('en-US')}`; await global.FritreeAppState.addWaCards(pkg.totalPoints, descWa); } await global.FritreeAppState.saveAccountData(); if (global.FritreeShellLayout) global.FritreeShellLayout.updatePointsUI(); const successMsg = `تم تفعيل الحزمة بنجاح!\nتم إضافة +${pkg.totalPoints.toLocaleString('en-US')} نقطة لحسابك فوراً.`; alert(successMsg); if (typeof window.addLog === 'function') { window.addLog(successMsg, 'success'); } if (global.FritreeWallet && typeof global.FritreeWallet.renderLedgerTable === 'function') { await global.FritreeWallet.renderLedgerTable(); } } else { alert("حدث خطأ غير متوقع أثناء محاولة خصم الأرصدة من المحفظة."); } } } /** * ربط أحداث متجر النقاط */ const bindStoreEvents = () => { const btnByUsd = document.getElementById('e1kue4bxi8'); const btnByPts = document.getElementById('oppazp520b'); const containerUsdMode = document.getElementById('ssaw6xzw1u'); const containerPtsMode = document.getElementById('ijac87awiy'); if (btnByUsd && btnByPts) { btnByUsd.onclick = () => { btnByUsd.classList.add('vn5qn7dmpk'); btnByPts.classList.remove('vn5qn7dmpk'); if (containerUsdMode) containerUsdMode.style.display = 'flex'; if (containerPtsMode) containerPtsMode.style.display = 'none'; updateInteractiveCalculator(); }; btnByPts.onclick = () => { btnByPts.classList.add('vn5qn7dmpk'); btnByUsd.classList.remove('vn5qn7dmpk'); if (containerPtsMode) containerPtsMode.style.display = 'flex'; if (containerUsdMode) containerUsdMode.style.display = 'none'; updateInteractiveCalculator(); }; } const usdInp = document.getElementById('jkfrigkx79'); const usdSlider = document.getElementById('d59w7te1vj'); const splitSlider = document.getElementById('e89vbjxky3'); if (usdInp) { usdInp.oninput = () => { let val = parseFloat(usdInp.value) || 0.01; if (val > 10000) val = 10000; usdInp.value = val; updateInteractiveCalculator(); }; usdInp.onchange = updateInteractiveCalculator; } if (usdSlider) { usdSlider.oninput = (e) => { if (usdInp) usdInp.value = parseFloat(e.target.value); updateInteractiveCalculator(); }; } if (splitSlider) { splitSlider.oninput = updateInteractiveCalculator; } const fbPtsInp = document.getElementById('ra4lnuh31g'); const waPtsInp = document.getElementById('obapd8lbcc'); if (fbPtsInp) fbPtsInp.oninput = updateInteractiveCalculator; if (waPtsInp) waPtsInp.oninput = updateInteractiveCalculator; const executeExchangeBtn = document.getElementById('fmkoglcexo'); if (executeExchangeBtn) { executeExchangeBtn.onclick = executeCustomCalculatorExchange; } const btnGoSupport = document.getElementById('bcs0nsg7st'); if (btnGoSupport) { btnGoSupport.onclick = () => { window.location.hash = 'xrsxtjzo87'; }; } }; /** * تهيئة وحدة متجر النقاط */ const initStoreModule = () => { const sidebar = document.getElementById('bmh59axx92'); const mainContentArea = document.getElementById('s7ihkirolg'); if (!sidebar || !mainContentArea) return false; buildStorePane(); bindStoreEvents(); renderAllPromoPackagesGrid(); updateInteractiveCalculator(); return true; }; /** * تصدير وحدة واجهة المتجر */ global.FritreeStore = { init: initStoreModule, buyPackage: executeDirectPackagePurchase, updateCalculator: updateInteractiveCalculator, packages: global.FritreeStoreConfig?.ALL_PROMO_PACKAGES || [] }; if (typeof document !== 'undefined') { if (!initStoreModule()) { document.addEventListener('DOMContentLoaded', initStoreModule); window.addEventListener('load', initStoreModule); } } })(typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : this);