feat: Load user information for requests; enhance dialog title handling and improve data retrieval
This commit is contained in:
@@ -103,7 +103,10 @@ data class DialogEntity(
|
||||
val lastSeen: Long = 0, // Последний раз онлайн
|
||||
|
||||
@ColumnInfo(name = "verified")
|
||||
val verified: Int = 0 // Верифицирован
|
||||
val verified: Int = 0, // Верифицирован
|
||||
|
||||
@ColumnInfo(name = "i_have_sent", defaultValue = "0")
|
||||
val iHaveSent: Int = 0 // Отправлял ли я сообщения в этот диалог (0/1)
|
||||
)
|
||||
|
||||
/**
|
||||
@@ -293,15 +296,10 @@ interface DialogDao {
|
||||
* Исключает requests (диалоги без исходящих сообщений от нас)
|
||||
*/
|
||||
@Query("""
|
||||
SELECT d.* FROM dialogs d
|
||||
WHERE d.account = :account
|
||||
AND EXISTS (
|
||||
SELECT 1 FROM messages m
|
||||
WHERE m.account = :account
|
||||
AND m.from_public_key = :account
|
||||
AND m.to_public_key = d.opponent_key
|
||||
)
|
||||
ORDER BY d.last_message_timestamp DESC
|
||||
SELECT * FROM dialogs
|
||||
WHERE account = :account
|
||||
AND i_have_sent = 1
|
||||
ORDER BY last_message_timestamp DESC
|
||||
""")
|
||||
fun getDialogsFlow(account: String): Flow<List<DialogEntity>>
|
||||
|
||||
@@ -309,15 +307,10 @@ interface DialogDao {
|
||||
* Получить requests - диалоги где нам писали, но мы не отвечали
|
||||
*/
|
||||
@Query("""
|
||||
SELECT d.* FROM dialogs d
|
||||
WHERE d.account = :account
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM messages m
|
||||
WHERE m.account = :account
|
||||
AND m.from_public_key = :account
|
||||
AND m.to_public_key = d.opponent_key
|
||||
)
|
||||
ORDER BY d.last_message_timestamp DESC
|
||||
SELECT * FROM dialogs
|
||||
WHERE account = :account
|
||||
AND i_have_sent = 0
|
||||
ORDER BY last_message_timestamp DESC
|
||||
""")
|
||||
fun getRequestsFlow(account: String): Flow<List<DialogEntity>>
|
||||
|
||||
@@ -325,14 +318,9 @@ interface DialogDao {
|
||||
* Получить количество requests
|
||||
*/
|
||||
@Query("""
|
||||
SELECT COUNT(*) FROM dialogs d
|
||||
WHERE d.account = :account
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM messages m
|
||||
WHERE m.account = :account
|
||||
AND m.from_public_key = :account
|
||||
AND m.to_public_key = d.opponent_key
|
||||
)
|
||||
SELECT COUNT(*) FROM dialogs
|
||||
WHERE account = :account
|
||||
AND i_have_sent = 0
|
||||
""")
|
||||
fun getRequestsCountFlow(account: String): Flow<Int>
|
||||
|
||||
@@ -371,6 +359,12 @@ interface DialogDao {
|
||||
@Query("UPDATE dialogs SET unread_count = 0 WHERE account = :account AND opponent_key = :opponentKey")
|
||||
suspend fun clearUnreadCount(account: String, opponentKey: String)
|
||||
|
||||
/**
|
||||
* Отметить что я отправлял сообщения в этот диалог
|
||||
*/
|
||||
@Query("UPDATE dialogs SET i_have_sent = 1 WHERE account = :account AND opponent_key = :opponentKey")
|
||||
suspend fun markIHaveSent(account: String, opponentKey: String)
|
||||
|
||||
/**
|
||||
* Обновить онлайн статус
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user