srctree

Akito parent e83af982 dd68671d
Add outgoing friend request message to chat

inlinesplit
atox/src/main/kotlin/ui/addcontact/AddContactViewModel.kt added: 33, removed: 5, total 28
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2019-2021 aTox contributors
// SPDX-FileCopyrightText: 2019-2022 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -7,15 +7,24 @@ package ltd.evilcorp.atox.ui.addcontact
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import ltd.evilcorp.atox.tox.ToxStarter
import ltd.evilcorp.core.repository.MessageRepository
import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.Message
import ltd.evilcorp.core.vo.MessageType
import ltd.evilcorp.core.vo.Sender
import ltd.evilcorp.domain.feature.ContactManager
import ltd.evilcorp.domain.tox.Tox
import ltd.evilcorp.domain.tox.ToxID
import ltd.evilcorp.domain.tox.ToxSaveStatus
import java.util.Date
import javax.inject.Inject
 
class AddContactViewModel @Inject constructor(
private val scope: CoroutineScope,
private val messageRepository: MessageRepository,
private val contactManager: ContactManager,
private val tox: Tox,
private val toxStarter: ToxStarter,
@@ -26,5 +35,21 @@ class AddContactViewModel @Inject constructor(
fun isToxRunning() = tox.started
fun tryLoadTox(): Boolean = toxStarter.tryLoadTox(null) == ToxSaveStatus.Ok
 
fun addContact(toxId: ToxID, message: String) = contactManager.add(toxId, message)
private fun addToChatLog(publicKey: String, message: String) = scope.launch {
messageRepository.add(
Message(
publicKey,
message,
Sender.Sent,
MessageType.Normal,
0,
Date().time,
),
)
}
 
fun addContact(toxId: ToxID, message: String) {
contactManager.add(toxId, message)
addToChatLog(toxId.toPublicKey().string(), message)
}
}
 
domain/src/main/kotlin/feature/ContactManager.kt added: 33, removed: 5, total 28
@@ -11,6 +11,7 @@ import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.domain.tox.PublicKey
import ltd.evilcorp.domain.tox.Tox
import ltd.evilcorp.domain.tox.ToxID
import java.util.Date
import javax.inject.Inject
 
class ContactManager @Inject constructor(
@@ -22,8 +23,10 @@ class ContactManager @Inject constructor(
fun getAll() = contactRepository.getAll()
 
fun add(toxID: ToxID, message: String) = scope.launch {
val publicKeyTxt = toxID.toPublicKey().string()
tox.addContact(toxID, message)
contactRepository.add(Contact(toxID.toPublicKey().string()))
contactRepository.add(Contact(publicKeyTxt))
contactRepository.setLastMessage(publicKeyTxt, Date().time)
}
 
fun delete(publicKey: PublicKey) = scope.launch {