srctree

Akito parent 3001d1d9 e83af982
Add incoming friend request message to chat

inlinesplit
atox/src/main/kotlin/ui/friendrequest/FriendRequestFragment.kt added: 29, removed: 5, total 24
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2020-2021 aTox contributors
// SPDX-FileCopyrightText: 2020-2022 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -48,6 +48,7 @@ class FriendRequestFragment : BaseFragment<FragmentFriendRequestBinding>(Fragmen
 
accept.setOnClickListener {
vm.accept(friendRequest)
vm.addToChatLog(friendRequest)
findNavController().popBackStack()
}
 
 
atox/src/main/kotlin/ui/friendrequest/FriendRequestViewModel.kt added: 29, removed: 5, total 24
@@ -1,4 +1,4 @@
// SPDX-FileCopyrightText: 2020 aTox contributors
// SPDX-FileCopyrightText: 2020-2022 aTox contributors
//
// SPDX-License-Identifier: GPL-3.0-only
 
@@ -7,15 +7,36 @@ package ltd.evilcorp.atox.ui.friendrequest
import androidx.lifecycle.LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.asLiveData
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import ltd.evilcorp.core.repository.MessageRepository
import ltd.evilcorp.core.vo.FriendRequest
import ltd.evilcorp.core.vo.Message
import ltd.evilcorp.core.vo.MessageType
import ltd.evilcorp.core.vo.Sender
import ltd.evilcorp.domain.feature.FriendRequestManager
import ltd.evilcorp.domain.tox.PublicKey
import java.util.Date
import javax.inject.Inject
 
class FriendRequestViewModel @Inject constructor(
private val scope: CoroutineScope,
private val friendRequests: FriendRequestManager,
private val messageRepository: MessageRepository,
) : ViewModel() {
fun byId(pk: PublicKey): LiveData<FriendRequest> = friendRequests.get(pk).asLiveData()
fun accept(request: FriendRequest) = friendRequests.accept(request)
fun reject(request: FriendRequest) = friendRequests.reject(request)
fun addToChatLog(request: FriendRequest) = scope.launch {
messageRepository.add(
Message(
request.publicKey,
request.message,
Sender.Received,
MessageType.Normal,
0,
Date().time,
),
)
}
}
 
domain/src/main/kotlin/feature/FriendRequestManager.kt added: 29, removed: 5, total 24
@@ -13,6 +13,7 @@ import ltd.evilcorp.core.vo.Contact
import ltd.evilcorp.core.vo.FriendRequest
import ltd.evilcorp.domain.tox.PublicKey
import ltd.evilcorp.domain.tox.Tox
import java.util.Date
import javax.inject.Inject
 
class FriendRequestManager @Inject constructor(
@@ -27,6 +28,7 @@ class FriendRequestManager @Inject constructor(
fun accept(friendRequest: FriendRequest) = scope.launch {
tox.acceptFriendRequest(PublicKey(friendRequest.publicKey))
contactRepository.add(Contact(friendRequest.publicKey))
contactRepository.setLastMessage(friendRequest.publicKey, Date().time)
friendRequestRepository.delete(friendRequest)
}