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