cryptofoundry

Связаться с cryptofoundry

Расскажите, что вы хотите создать или автоматизировать.

Электронная почта
[email protected]
ADAMANT Messenger
Открыть в ADAMANT
Dev Guidelines & Docs

Проверка работоспособности: индикатор обновления

Скриншот обсуждения 1

Отсутствие индикатора загрузки в заголовке 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 и подписаны на хук chatActual = chatActualUntil > currentTime. Этот хук запускается каждые 500 миллисекунд, чтобы активировать индикатор загрузки, даже если chatActualUntil не изменился из-за отсутствия новых сообщений. В итоге индикатор отображается при отсутствии интернета, отсутствии онлайн-узлов или если !chatActual принимает значение true.

Когда приложение восстанавливается из фонового режима, дополнительные изменения не требуются, поскольку оно по-прежнему полагается на chatActualUntil. Если системное время устройства превышает временную метку актуальности чата, пользователь увидит индикатор загрузки. В худшем случае, при потере соединения, пользователь может не увидеть индикатор и ошибочно полагать, что всё актуально, в течение максимум INTERVAL + CHAT_ACTUALITY_BUFFER_MS секунд.