
غياب مؤشر التحميل في رأس ADAMANT يضمن أن المستخدم يرى أحدث قائمة من الدردشات والرسائل. يجب عرض المؤشر إذا لم تكن هناك اتصال بالإنترنت، أو لم تكن هناك عقد ADM نشطة، أو لم تكن هناك عقد ADM ممكّنة.
عند توفر اتصال ووجود عقد نشطة، يقوم النظام بالتحقق بشكل إضافي. عند استلام رسائل جديدة—بمعنى أنه لا توجد رسائل أحدث—يتم حفظ الطابع الزمني chatActualUntil في المخزن.
const chatsActualUntil = adamant.toTimestamp(nodeTimestamp) + INTERVAL + CHAT_ACTUALITY_BUFFER_MS
تمثل INTERVAL فترة الاستطلاع للدردشات الجديدة عبر REST، وتختلف حسب توفر اتصال السوكيت.
INTERVAL: (state, getters, rootState) => {
return rootState.options.useSocketConnection ? SOCKET_ENABLED_TIMEOUT : SOCKET_DISABLED_TIMEOUT
},
تقوم شاشات الدردشة وقائمة الدردشات بمراقبة chatActualUntil والاشتراك في الـ hook التالي: chatActual = chatActualUntil > currentTime. يتم تشغيل هذا الـ hook كل 500 مللي ثانية لتفعيل عرض مؤشر التحميل حتى لو لم يتغير chatActualUntil بسبب عدم وجود رسائل جديدة. في النهاية، يتم عرض المؤشر إذا لم يكن هناك اتصال بالإنترنت، أو لم تكن هناك عقد متصلة، أو إذا كانت قيمة !chatActual تساوي true.
عند استعادة التطبيق من الخلفية، لا توجد حاجة لأي تعديلات لأنه ما زال يعتمد على chatActualUntil. إذا تجاوز وقت الجهاز الطابع الزمني لصلاحية الدردشة، فسوف يرى المستخدم مؤشر التحميل. في أسوأ الأحوال، إذا انقطع الاتصال، قد لا يرى المستخدم المؤشر وقد يظن خطأً أن كل شيء محدّث لمدة تصل إلى INTERVAL + CHAT_ACTUALITY_BUFFER_MS ثانية.