Opera8 commited on
Commit
88a339b
·
verified ·
1 Parent(s): b7c77a2

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +44 -4
index.html CHANGED
@@ -333,8 +333,8 @@
333
  <div class="modal-overlay" id="upgradeModal">
334
  <div class="modal-box">
335
  <div class="upgrade-icon">👑</div>
336
- <h3 style="font-weight: 800; color: #333;">دانلود مخصوص اعضای ویژه</h3>
337
- <p style="margin-bottom: 25px; line-height: 1.6;">برای دانلود آهنگ‌های ساخته شده با کیفیت اصلی و بدون محدودیت، لطفا حساب کاربری خود را به نسخه نامحدود ارتقا دهید.</p>
338
  <div class="modal-actions" style="flex-direction: column;">
339
  <button class="btn-modal btn-upgrade" id="btnGoPremium">⭐️ ارتقا به نسخه کامل</button>
340
  <button class="btn-modal btn-cancel" onclick="closeUpgradeModal()" style="width: 100%;">فعلاً نه</button>
@@ -367,6 +367,8 @@
367
  const deleteModal = document.getElementById('deleteConfirmModal');
368
  const upgradeModal = document.getElementById('upgradeModal');
369
  const statusBadge = document.getElementById('statusBadge');
 
 
370
 
371
  const getVal = (id) => document.getElementById(id).value;
372
  const getNum = (id) => Number(document.getElementById(id).value);
@@ -381,6 +383,17 @@
381
  });
382
  }
383
 
 
 
 
 
 
 
 
 
 
 
 
384
  // --- مدیریت اشتراک و ارتباط با آیفریم مادر ---
385
  function isUserPaid(userObject) {
386
  return userObject && userObject.isLogin && userObject.accessible_pages &&
@@ -396,7 +409,6 @@
396
  } else {
397
  statusBadge.textContent = 'نسخه رایگان';
398
  statusBadge.className = 'status-badge visible badge-free';
399
- // در حالت رایگان آیکون قفل به دکمه دانلود (اختیاری) اضافه نمی‌کنیم تا کاربر کلیک کند و مودال ببیند
400
  }
401
  }
402
 
@@ -421,6 +433,9 @@
421
  if (e) e.preventDefault();
422
 
423
  if (userSubscriptionStatus === 'free') {
 
 
 
424
  upgradeModal.classList.add('open');
425
  } else {
426
  // ارسال درخواست دانلود به آیفریم مادر
@@ -582,7 +597,32 @@
582
 
583
  try {
584
  loaderText.innerText = "آلفا در حال نوشتن شعر و ملودی...";
585
- const response = await fetch('/api/refine', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ idea: ideaInput.value }) });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
586
  const data = await response.json();
587
  if (data.error) throw new Error(data.error);
588
 
 
333
  <div class="modal-overlay" id="upgradeModal">
334
  <div class="modal-box">
335
  <div class="upgrade-icon">👑</div>
336
+ <h3 style="font-weight: 800; color: #333;" id="upgradeModalTitle">دانلود مخصوص اعضای ویژه</h3>
337
+ <p style="margin-bottom: 25px; line-height: 1.6;" id="upgradeModalText">برای دانلود آهنگ‌های ساخته شده با کیفیت اصلی و بدون محدودیت، لطفا حساب کاربری خود را به نسخه نامحدود ارتقا دهید.</p>
338
  <div class="modal-actions" style="flex-direction: column;">
339
  <button class="btn-modal btn-upgrade" id="btnGoPremium">⭐️ ارتقا به نسخه کامل</button>
340
  <button class="btn-modal btn-cancel" onclick="closeUpgradeModal()" style="width: 100%;">فعلاً نه</button>
 
367
  const deleteModal = document.getElementById('deleteConfirmModal');
368
  const upgradeModal = document.getElementById('upgradeModal');
369
  const statusBadge = document.getElementById('statusBadge');
370
+ const upgradeModalTitle = document.getElementById('upgradeModalTitle');
371
+ const upgradeModalText = document.getElementById('upgradeModalText');
372
 
373
  const getVal = (id) => document.getElementById(id).value;
374
  const getNum = (id) => Number(document.getElementById(id).value);
 
383
  });
384
  }
385
 
386
+ // --- مدیریت اثر انگشت (Fingerprint) ---
387
+ function getFingerprint() {
388
+ let fp = localStorage.getItem('user_fingerprint');
389
+ if (!fp) {
390
+ // تولید یک شناسه تصادفی و ذخیره آن
391
+ fp = 'user_' + Math.random().toString(36).substr(2, 9) + Date.now().toString(36);
392
+ localStorage.setItem('user_fingerprint', fp);
393
+ }
394
+ return fp;
395
+ }
396
+
397
  // --- مدیریت اشتراک و ارتباط با آیفریم مادر ---
398
  function isUserPaid(userObject) {
399
  return userObject && userObject.isLogin && userObject.accessible_pages &&
 
409
  } else {
410
  statusBadge.textContent = 'نسخه رایگان';
411
  statusBadge.className = 'status-badge visible badge-free';
 
412
  }
413
  }
414
 
 
433
  if (e) e.preventDefault();
434
 
435
  if (userSubscriptionStatus === 'free') {
436
+ // تنظیم متن مودال برای دانلود
437
+ upgradeModalTitle.innerText = "دانلود مخصوص اعضای ویژه";
438
+ upgradeModalText.innerText = "برای دانلود آهنگ‌های ساخته شده با کیفیت اصلی و بدون محدودیت، لطفا حساب کاربری خود را به نسخه نامحدود ارتقا دهید.";
439
  upgradeModal.classList.add('open');
440
  } else {
441
  // ارسال درخواست دانلود به آیفریم مادر
 
597
 
598
  try {
599
  loaderText.innerText = "آلفا در حال نوشتن شعر و ملودی...";
600
+
601
+ // ارسال درخواست به سرور با فینگرپرینت و وضعیت اشتراک
602
+ const response = await fetch('/api/refine', {
603
+ method: 'POST',
604
+ headers: {'Content-Type': 'application/json'},
605
+ body: JSON.stringify({
606
+ idea: ideaInput.value,
607
+ fingerprint: getFingerprint(),
608
+ is_premium: userSubscriptionStatus === 'paid'
609
+ })
610
+ });
611
+
612
+ // بررسی خطای محدودیت روزانه (429)
613
+ if (response.status === 429) {
614
+ loader.style.display = 'none';
615
+ step1.style.display = 'block';
616
+ historySection.style.display = 'block';
617
+ processBtn.disabled = false;
618
+
619
+ // نمایش مودال ارتقا با متن مناسب
620
+ upgradeModalTitle.innerText = "محدودیت ساخت روزانه";
621
+ upgradeModalText.innerText = "شما به سقف ۵ آهنگ رایگان در روز رسیده‌اید. برای ساخت آهنگ‌های بیشتر و نامحدود، لطفا حساب خود را ارتقا دهید.";
622
+ upgradeModal.classList.add('open');
623
+ return;
624
+ }
625
+
626
  const data = await response.json();
627
  if (data.error) throw new Error(data.error);
628