Skip to content

v1.2.0

Latest

Choose a tag to compare

@OGKushhh OGKushhh released this 11 Jul 04:25

📋 سجل التغييرات الشامل – الإصدار الجديد

يضم هذا الإصدار إعادة هيكلة شاملة لشاشة المفضلات، نظام ملف شخصي متكامل مع صور رمزية ومكوّن Lightbox، إصلاحات متعددة للإعلانات والإعدادات، تفعيل مزامنة المحتوى عبر الإشعارات الفورية، تحديث تطبيقي داخلي لنظام Android، بالإضافة إلى تحسينات أساسية مثل تثبيت وضعية الشاشة العمودية بعد الخروج من المشغل.


🎬 شاشة المفضلات – إعادة هيكلة شاملة + تتبُّع دقيق للمشاهدة

  • تغيير تخطيط الشبكة من 3 أعمدة إلى عمودين لتحسين قابلية القراءة وإبراز البطاقات بحجم مناسب.
  • توحيد تصميم البطاقات باستخدام مكون MovieCard المشترك مع شاشات التصنيفات والرئيسية، لضمان عرض موحَّد للتقييم، الجودة، التصنيف، وشارات المواسم في كل مكان.
  • إضافة آلية احتياطية للبيانات غير المحملة (حالة التشغيل الأول للتطبيق) حيث تُعرض بطاقة مؤقتة بالعنوان والصورة المحفوظة، وتظهر الشارات الكاملة فور تحميل التصنيف المعني، دون انكسار الشاشة.
  • إضافة زر تصفية مع شارة تعرض عدد الفلاتر النشطة، ونافذة منبثقة من الأسفل تحتوي على:
    • خيارات الترتيب: الأحدث، الأقدم، أبجدياً من الألف إلى الياء، ومن الياء إلى الألف.
    • تصفية حسب التصنيف (تظهر فقط عند وجود أكثر من تصنيف واحد في المفضلات الحالية).
  • عرض الفلاتر النشطة كرقائق (Chips) قابلة للإزالة أسفل شريط التبويب لتسهيل إلغاء التصفية.
  • إضافة خاصية الضغط المطول على أي بطاقة لحذف العنصر من المفضلات مباشرةً مع تأكيد، مع الحفاظ على التوافق العكسي مع باقي استخدامات MovieCard.
  • 🆕 إمكانية تحديد الموسم والحلقة بدقة من شاشة المفضلات – عبر منتقي مشابه لما في شاشة التفاصيل، يمكن للمستخدم النقر على أي عنصر مفضل واختيار الموسم والحلقة التي وصل إليها بالضبط، ويُحفظ هذا التقدم مع باقي البيانات لتذكيره لاحقاً.

👤 الملف الشخصي – نظام متكامل مع صور رمزية ومكوّن Lightbox

تم بناء نظام ملف شخصي كامل يدعم جميع أنواع الحسابات (البريد الإلكتروني، الضيوف، Google) ويتضمن:

  • إضافة الحقول الشخصية: الاسم، الجنس (ذكر/أنثى)، والأنواع المفضلة (اختيار متعدد من قائمة الأنواع الموجودة في التطبيق).
  • إمكانية تحميل صورة رمزية من معرض الجهاز، تُرفع إلى الخادم الخلفي حيث تُقصَّ وتُعاد تشكيلها إلى مربع بحجم 320×320 بكسل (جودة JPEG 85%)، وتُخزَّن كملف منفصل عن ملف المستخدم لتجنب تضخيم البيانات.
  • تكامل مع الخادم الخلفي عبر نقاط نهاية جديدة (GET/POST /api/profile، POST /api/profile/avatar، GET /api/profile/avatar/<uid>) لتحديث واسترجاع بيانات الملف الشخصي، مع أولوية القيم المخزنة على الخادم على قيم displayName و photoURL من مزود المصادقة.
  • إعادة كتابة شاشة الملف الشخصي بالكامل: النقر على الصورة يفتح نافذة لاختيار صورة جديدة (تُرفع فوراً)، وزر "تعديل الملف الشخصي" يفتح نافذة منبثقة لتعديل الاسم والجنس والأنواع المفضلة، مع حفظ جميع التغييرات دفعة واحدة.
  • 🆕 إضافة مكوّن Lightbox تفاعلي لعرض الصور – عند النقر على أي بوستر لعمل أو على الصورة الرمزية للملف الشخصي، يُفتح العرض بتكبير كامل مع خلفية معتمة وإمكانية التكبير/التصغير باللمس، لفحص التفاصيل بوضوح.
  • استخدام react-native-image-picker مع Photo Picker المدعوم في Android، دون الحاجة إلى صلاحيات READ_MEDIA_IMAGES، تماشياً مع سياسات متجر Google الحديثة.
  • إضافة مكتبة Pillow إلى متطلبات الخادم (requirements.txt) لمعالجة الصور.

📢 إصلاحات الإعلانات والمكافآت

  • إصلاح النص العربي في نافذة مكافأة الإعلان: كانت الترجمة تظهر بدون عدد الساعات بسبب استبدال {{hours}} بقيمة فارغة قبل معالجتها. تم تعديل الأسلوب ليتم استدعاء الترجمة بدون خيارات، ثم معالجة النص يدوياً للحفاظ على المكان.
  • تصحيح النص الإنجليزي: إزالة التكرار "hours hours" في قالب اللغة الإنجليزية.
  • تغيير مدة الخلو من الإعلانات من 3 ساعات إلى ساعتين، وتحديث النصوص في اللغتين العربية (بصيغة المثنى "ساعتين") والإنجليزية، مع ترك تعليق بتحديثها يدوياً مستقبلاً.
  • تأخير ظهور نافذة المكافأة حتى اكتمال جلب التصنيفات الأولي فعلياً، بدلاً من ظهورها بعد 1.5 ثانية عشوائياً، وذلك بربطها بسلسلة وعود بعد انتهاء المزامنة.

⚙️ شاشة الإعدادات – تحسينات وتنظيف

  • إعادة تصميم زر Ko-fi: استبدال الزر الممتد بتدرج لوني بزر صغير ومسطح ومظلم، مماثل للزر المستخدم في ملف README، للحصول على مظهر أنيق ومتناسق.
  • إزالة خيار "التشغيل التلقائي" (Auto Play) بعد التأكد من عدم استخدامه في أي مكان في كود تشغيل الفيديو، وحذف الحقل من أنواع البيانات والإعدادات الافتراضية ومفتاح الترجمة المرتبط.
  • إزالة خيار "الوضع الليلي" (Dark Mode) من الواجهة نظراً لعدم وجود واجهة فاتحة بعد، مع الإبقاء على نظام useTheme الداخلي وحقل darkMode في الإعدادات لضمان عدم تعطل المكونات.
  • تنظيف الكود الخاص بالتبديل: إزالة المعالجة الخاصة لخيار dark_mode في دالتَي SettingRow و updateSetting.

🔧 إصلاح أعطال التصنيفات والفلترة

  • إصلاح عطل الضغط على أي تصنيف في شاشة التصنيفات: كانت الشاشة تستدعي دالة غير موجودة setSelectedGenre بدلاً من setSelectedGenres (المصفوفة). تم تصحيح الاستدعاء ليصبح setSelectedGenres(incomingGenre ? [incomingGenre] : []).

📺 تتبع تقدم المشاهدة – منتقي حقيقي للموسم والحلقة

  • إصلاح خاصية "تحديد كمشاهَد" التي كانت تعتمد على Alert.prompt (لا يعمل على Android) وتستخدم الموسم المختار في قائمة التنقل دون إعطاء المستخدم خياراً فعلياً للحلقة.
  • استبدالها بنافذة اختيار منبثقة حقيقية تحتوي على أزرار للمواسم مع عداد زائد/ناقص للحلقة (محدد بعدد حلقات الموسم المختار)، مع إعادة استخدام النمط البصري لنوافذ اختيار الموسم الموجودة مسبقاً.
  • استدعاء دالة handleCollectionToggleWithProgress مع قيم الموسم والحلقة التي اختارها المستخدم فعلياً.

🔄 مزامنة المحتوى عبر الإشعارات الفورية

  • تفعيل تحديث المحتوى عند وصول إشعار دفعي:
    • عند استقبال إشعار من النوع content_update (مع معرف التصنيف)، يتم تحديث هذا التصنيف فقط عبر loadCategory(cat, true) لفرض إعادة التحميل.
    • عند استقبال إشعار من النوع general_update (بدون تصنيف محدد، مثل إضافة عناوين جديدة)، يتم تحديث جميع التصنيفات المدرجة في SYNC_CATEGORIES بقوة.
  • تكامل مع جميع نقاط استقبال الإشعارات: المعالج في المقدمة (Foreground)، النقر على الإشعار في الخلفية، ومعالج الخلفية في index.js.
  • إصلاح عطل استقبال الإشعارات في المقدمة: كانت دالة setupForegroundHandler مستوردة ولكن لم تُستدعَ، فتم تفعيلها مع ضمان إلغاء الاشتراك عند فك التركيب.
  • ملاحظة: التحديث يحصل على مستوى التخزين المؤقت، لكن الشاشات المفتوحة حالياً لا تُحدّث تلقائياً (تحتاج إلى إعادة الدخول) – يمكن تحسينه لاحقاً.

📲 التحديث التطبيقي الداخلي (In-App Update) لنظام Android

  • تنفيذ آلية تحميل وتثبيت APK كاملة دون الحاجة إلى إضافة مكتبات جديدة، بالاعتماد على react-native-blob-util الموجود بالفعل، والذي يوفّر:
    • تتبع تقدّم التحميل بالبايت مع عرض نسبة مئوية وسرعة التحميل (كيلوبايت/ثانية أو ميجابايت/ثانية).
    • تشغيل Intent لتثبيت التطبيق باستخدام FileProvider والتعامل مع محتوى URI.
  • واجهة مستخدم للتقدّم: تعديل UpdateModal.tsx ليظهر شريط تقدّم مع النسبة المئوية والسرعة أثناء التحميل، واستبدال زر التحميل بهذه المعلومات.
  • دعم Android 10+ (التخزين المقيد): التحميل إلى المجلد الخاص بالتطبيق (cache) مما يتجنب الحاجة إلى صلاحية كتابة التخزين الخارجي.
  • دعم Android 12+ (PendingIntent): إضافة إعلان REQUEST_INSTALL_PACKAGES، وعنصر <queries> لدعم application/vnd.android.package-archive، وإعداد FileProvider وملف provider_paths.xml لضمان عمل actionViewIntent على الأجهزة الحديثة.
  • آلية احتياطية: في حال فشل التحميل الداخلي، يعود التطبيق تلقائياً إلى فتح رابط التحميل في المتصفح (الطريقة القديمة).
  • نظام iOS: لم يتأثر، ويستمر بفتح الرابط في المتصفح كالسابق.

🛠️ إصلاحات وتحسينات إضافية

  • 🆕 إصلاح فقدان وضعية الشاشة العمودية بعد الخروج من مشغل الفيديو – كانت الشاشة تُفقد القفل على الوضع العمودي بعد العودة من مشاهدة فيديو، مما يتسبب في دوران غير مرغوب. تم إصلاح المشكلة نهائياً بحيث يبقى قفل الاتجاه ثابتاً بعد الخروج من المشغل، مما يحافظ على تجربة مستقرة.
  • 🆕 إضافة مكوّن Lightbox لعرض الصور – أُضيف مكوّن تفاعلي لعرض الصور بتكبير عند النقر على أي بوستر أو صورة رمزية، مع خلفية معتمة وإمكانية التكبير/التصغير بالإيماءات، مما يثري تجربة استعراض الملصقات والصور الشخصية (تم تفصيله أعلاه ضمن قسم الملف الشخصي).
  • تحديث متطلبات الخادم وإضافة نقاط النهاية اللازمة لإدارة الصور الرمزية والملف الشخصي.
  • ضمان توافق جميع التغييرات مع البنية الحالية للتخزين المؤقت والمزامنة مع الخادم، مع الحفاظ على أداء التطبيق.

🔮 ميزات لا تزال قيد التطوير (ستأتي في إصدارات لاحقة)

  • تسجيل الدخول بالهاتف (إصلاح عطل "something went wrong").
  • الخروج من Google والسماح بتسجيل الدخول بحساب مختلف دون إعادة تشغيل التطبيق.
  • تفعيل تحذير البيانات الخلوية (Mobile Data Warning) عند تشغيل الفيديو أو التحميل.
  • إعادة هيكلة نظام التصنيفات والفلترة ونقل معالجتها إلى الخادم الخلفي.
  • تحديث الشاشات المفتوحة تلقائياً عند وصول إشعارات المحتوى (تحسين مستقبلي).

ملاحظة: جميع التغييرات المذكورة أعلاه تم اختبارها وتثبيتها في هذا الإصدار. نأمل أن تحسّن تجربة الاستخدام بشكل ملحوظ. شكراً لاستخدامكم التطبيق!