feat: Update message deletion logic in ChatDetailScreen to remove messages by dialog key
This commit is contained in:
@@ -1127,8 +1127,12 @@ fun ChatDetailScreen(
|
|||||||
showDeleteConfirm = false
|
showDeleteConfirm = false
|
||||||
scope.launch {
|
scope.launch {
|
||||||
try {
|
try {
|
||||||
// Удаляем все сообщения из диалога
|
// Удаляем все сообщения из диалога по dialog_key
|
||||||
// DELETE FROM messages WHERE ((from_public_key = ? AND to_public_key = ?) OR (from_public_key = ? AND to_public_key = ?)) AND account = ?
|
database.messageDao().deleteDialog(
|
||||||
|
account = currentUserPublicKey,
|
||||||
|
dialogKey = user.publicKey
|
||||||
|
)
|
||||||
|
// Также пробуем удалить по from/to ключам (на всякий случай)
|
||||||
database.messageDao().deleteMessagesBetweenUsers(
|
database.messageDao().deleteMessagesBetweenUsers(
|
||||||
account = currentUserPublicKey,
|
account = currentUserPublicKey,
|
||||||
user1 = user.publicKey,
|
user1 = user.publicKey,
|
||||||
@@ -1143,9 +1147,10 @@ fun ChatDetailScreen(
|
|||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
android.util.Log.e("ChatDetail", "❌ Error deleting chat", e)
|
android.util.Log.e("ChatDetail", "❌ Error deleting chat", e)
|
||||||
}
|
}
|
||||||
}
|
// Выходим ПОСЛЕ удаления
|
||||||
onBack()
|
onBack()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
) {
|
) {
|
||||||
Text("Delete", color = Color(0xFFFF3B30))
|
Text("Delete", color = Color(0xFFFF3B30))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -273,10 +273,11 @@ class ChatViewModel(application: Application) : AndroidViewModel(application) {
|
|||||||
* Открыть диалог
|
* Открыть диалог
|
||||||
*/
|
*/
|
||||||
fun openDialog(publicKey: String, title: String = "", username: String = "") {
|
fun openDialog(publicKey: String, title: String = "", username: String = "") {
|
||||||
if (opponentKey == publicKey) {
|
// 🔥 ВСЕГДА перезагружаем данные - не кешируем, т.к. диалог мог быть удалён
|
||||||
ProtocolManager.addLog("💬 Dialog already open: ${publicKey.take(16)}...")
|
// if (opponentKey == publicKey) {
|
||||||
return
|
// ProtocolManager.addLog("💬 Dialog already open: ${publicKey.take(16)}...")
|
||||||
}
|
// return
|
||||||
|
// }
|
||||||
|
|
||||||
// Отменяем предыдущую загрузку
|
// Отменяем предыдущую загрузку
|
||||||
loadingJob?.cancel()
|
loadingJob?.cancel()
|
||||||
|
|||||||
Reference in New Issue
Block a user