Исправлен ложный online в чат-листе: сброс устаревших статусов при старте
This commit is contained in:
@@ -682,6 +682,10 @@ interface DialogDao {
|
||||
lastSeen: Long
|
||||
)
|
||||
|
||||
/** Сбросить online-флаг у всех диалогов аккаунта (защита от устаревшего кэша при старте) */
|
||||
@Query("UPDATE dialogs SET is_online = 0 WHERE account = :account AND is_online != 0")
|
||||
suspend fun clearOnlineStatuses(account: String)
|
||||
|
||||
/** Получить онлайн статус пользователя */
|
||||
@Query(
|
||||
"""
|
||||
|
||||
@@ -266,6 +266,12 @@ class ChatsListViewModel(application: Application) : AndroidViewModel(applicatio
|
||||
// Запускаем все подписки в одном родительском Job для отмены при смене аккаунта
|
||||
accountSubscriptionsJob = viewModelScope.launch {
|
||||
|
||||
// 🟢 Сбрасываем устаревшие online-флаги из прошлого сеанса.
|
||||
// Актуальные статусы придут сразу после PacketOnlineSubscribe.
|
||||
withContext(Dispatchers.IO) {
|
||||
runCatching { dialogDao.clearOnlineStatuses(publicKey) }
|
||||
}
|
||||
|
||||
// Подписываемся на обычные диалоги
|
||||
@OptIn(FlowPreview::class)
|
||||
launch {
|
||||
|
||||
Reference in New Issue
Block a user