Refactor code structure for improved readability and maintainability
This commit is contained in:
@@ -361,9 +361,10 @@ interface DialogDao {
|
||||
|
||||
/**
|
||||
* Отметить что я отправлял сообщения в этот диалог
|
||||
* Возвращает количество обновлённых строк
|
||||
*/
|
||||
@Query("UPDATE dialogs SET i_have_sent = 1 WHERE account = :account AND opponent_key = :opponentKey")
|
||||
suspend fun markIHaveSent(account: String, opponentKey: String)
|
||||
suspend fun markIHaveSent(account: String, opponentKey: String): Int
|
||||
|
||||
/**
|
||||
* Обновить онлайн статус
|
||||
@@ -417,7 +418,8 @@ interface DialogDao {
|
||||
* Логика:
|
||||
* 1. Берем последнее сообщение (по timestamp DESC)
|
||||
* 2. Считаем количество непрочитанных сообщений (from_me = 0 AND read = 0)
|
||||
* 3. Обновляем диалог или создаем новый
|
||||
* 3. Вычисляем i_have_sent = 1 если есть исходящие сообщения (from_me = 1) - как sended в Архиве
|
||||
* 4. Обновляем диалог или создаем новый
|
||||
*/
|
||||
@Query("""
|
||||
INSERT OR REPLACE INTO dialogs (
|
||||
@@ -430,7 +432,8 @@ interface DialogDao {
|
||||
unread_count,
|
||||
is_online,
|
||||
last_seen,
|
||||
verified
|
||||
verified,
|
||||
i_have_sent
|
||||
)
|
||||
SELECT
|
||||
:account AS account,
|
||||
@@ -478,7 +481,19 @@ interface DialogDao {
|
||||
COALESCE(
|
||||
(SELECT verified FROM dialogs WHERE account = :account AND opponent_key = :opponentKey),
|
||||
0
|
||||
) AS verified
|
||||
) AS verified,
|
||||
CASE
|
||||
WHEN (SELECT COUNT(*) FROM messages
|
||||
WHERE account = :account
|
||||
AND from_public_key = :account
|
||||
AND to_public_key = :opponentKey
|
||||
AND from_me = 1) > 0
|
||||
THEN 1
|
||||
ELSE COALESCE(
|
||||
(SELECT i_have_sent FROM dialogs WHERE account = :account AND opponent_key = :opponentKey),
|
||||
0
|
||||
)
|
||||
END AS i_have_sent
|
||||
""")
|
||||
suspend fun updateDialogFromMessages(account: String, opponentKey: String)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user