mirror of
https://github.com/nextcloud/talk-android
synced 2025-08-04 10:35:04 +01:00
updated tests + make logic async + removed old code
Signed-off-by: rapterjet2004 <juliuslinus1@gmail.com>
This commit is contained in:
parent
b040ebc6b4
commit
53c6511d00
@ -57,6 +57,7 @@ class ChatBlocksDaoTest {
|
||||
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
|
||||
|
||||
conversationsDao.upsertConversations(
|
||||
account1.id,
|
||||
listOf(
|
||||
createConversationEntity(
|
||||
accountId = account1.id,
|
||||
@ -182,6 +183,7 @@ class ChatBlocksDaoTest {
|
||||
val account1 = usersDao.getUserWithUserId("account1").blockingGet()
|
||||
|
||||
conversationsDao.upsertConversations(
|
||||
account1.id,
|
||||
listOf(
|
||||
createConversationEntity(
|
||||
accountId = account1.id,
|
||||
|
@ -66,6 +66,7 @@ class ChatMessagesDaoTest {
|
||||
// Problem: lets say we want to update the conv list -> We don#t know the primary keys!
|
||||
// with account@token that would be easier!
|
||||
conversationsDao.upsertConversations(
|
||||
account1.id,
|
||||
listOf(
|
||||
createConversationEntity(
|
||||
accountId = account1.id,
|
||||
|
@ -81,10 +81,12 @@ import com.nextcloud.talk.utils.message.MessageUtils
|
||||
import com.nextcloud.talk.utils.text.Spans
|
||||
import com.otaliastudios.autocomplete.Autocomplete
|
||||
import com.vanniktech.emoji.EmojiPopup
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.flow.collect
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import kotlinx.coroutines.withContext
|
||||
import java.util.Objects
|
||||
import javax.inject.Inject
|
||||
|
||||
@ -111,10 +113,6 @@ class MessageInputFragment : Fragment() {
|
||||
private const val CONNECTION_ESTABLISHED_ANIM_DURATION: Long = 3000
|
||||
private const val FULLY_OPAQUE: Float = 1.0f
|
||||
private const val FULLY_TRANSPARENT: Float = 0.0f
|
||||
const val QUOTED_MESSAGE_TEXT = "QUOTED_MESSAGE_TEXT"
|
||||
const val QUOTED_MESSAGE_ID = "QUOTED_MESSAGE_ID"
|
||||
const val QUOTED_MESSAGE_URL = "QUOTED_MESSAGE_URL"
|
||||
const val QUOTED_MESSAGE_NAME = "QUOTED_MESSAGE_NAME"
|
||||
}
|
||||
|
||||
@Inject
|
||||
@ -164,10 +162,6 @@ class MessageInputFragment : Fragment() {
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
if (mentionAutocomplete != null && mentionAutocomplete!!.isPopupShowing) {
|
||||
@ -306,24 +300,26 @@ class MessageInputFragment : Fragment() {
|
||||
}
|
||||
|
||||
private fun restoreState() {
|
||||
runBlocking {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
chatActivity.chatViewModel.updateMessageDraft()
|
||||
}
|
||||
|
||||
val draft = chatActivity.chatViewModel.messageDraft
|
||||
binding.fragmentMessageInputView.messageInput.setText(draft.messageText)
|
||||
binding.fragmentMessageInputView.messageInput.setSelection(draft.messageCursor)
|
||||
if (draft.messageText != "") {
|
||||
binding.fragmentMessageInputView.messageInput.requestFocus()
|
||||
}
|
||||
withContext(Dispatchers.Main) {
|
||||
val draft = chatActivity.chatViewModel.messageDraft
|
||||
binding.fragmentMessageInputView.messageInput.setText(draft.messageText)
|
||||
binding.fragmentMessageInputView.messageInput.setSelection(draft.messageCursor)
|
||||
if (draft.messageText != "") {
|
||||
binding.fragmentMessageInputView.messageInput.requestFocus()
|
||||
}
|
||||
|
||||
if (isInReplyState()) {
|
||||
replyToMessage(
|
||||
chatActivity.chatViewModel.messageDraft.quotedMessageText,
|
||||
chatActivity.chatViewModel.messageDraft.quotedDisplayName,
|
||||
chatActivity.chatViewModel.messageDraft.quotedImageUrl,
|
||||
chatActivity.chatViewModel.messageDraft.quotedJsonId ?: 0
|
||||
)
|
||||
if (isInReplyState()) {
|
||||
replyToMessage(
|
||||
chatActivity.chatViewModel.messageDraft.quotedMessageText,
|
||||
chatActivity.chatViewModel.messageDraft.quotedDisplayName,
|
||||
chatActivity.chatViewModel.messageDraft.quotedImageUrl,
|
||||
chatActivity.chatViewModel.messageDraft.quotedJsonId ?: 0
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -61,7 +61,6 @@ import kotlinx.coroutines.flow.first
|
||||
import kotlinx.coroutines.flow.flow
|
||||
import kotlinx.coroutines.flow.onEach
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.runBlocking
|
||||
import java.io.File
|
||||
import javax.inject.Inject
|
||||
|
||||
@ -113,7 +112,7 @@ class ChatViewModel @Inject constructor(
|
||||
chatRepository.handleOnPause()
|
||||
mediaPlayerManager.handleOnPause()
|
||||
|
||||
runBlocking(Dispatchers.IO) {
|
||||
CoroutineScope(Dispatchers.IO).launch {
|
||||
val model = conversationRepository.getLocallyStoredConversation(chatRoomToken)
|
||||
model?.let {
|
||||
it.messageDraft = messageDraft
|
||||
@ -295,6 +294,7 @@ class ChatViewModel @Inject constructor(
|
||||
|
||||
fun initData(credentials: String, urlForChatting: String, roomToken: String, threadId: Long?) {
|
||||
chatRepository.initData(credentials, urlForChatting, roomToken, threadId)
|
||||
chatRoomToken = roomToken
|
||||
}
|
||||
|
||||
fun updateConversation(currentConversation: ConversationModel) {
|
||||
|
@ -307,16 +307,6 @@ class ConversationsListActivity :
|
||||
showNotificationWarning()
|
||||
|
||||
showShareToScreen = hasActivityActionSendIntent()
|
||||
// context.getSharedPreferences(
|
||||
// CHAT_ACTIVITY_LOCAL_NAME,
|
||||
// MODE_PRIVATE
|
||||
// ).edit().apply {
|
||||
// putInt(QUOTED_MESSAGE_ID, -1)
|
||||
// putString(QUOTED_MESSAGE_NAME, null)
|
||||
// putString(QUOTED_MESSAGE_TEXT, "")
|
||||
// putString(QUOTED_MESSAGE_URL, null)
|
||||
// apply()
|
||||
// }
|
||||
|
||||
if (!eventBus.isRegistered(this)) {
|
||||
eventBus.register(this)
|
||||
|
@ -13,7 +13,6 @@ import androidx.room.OnConflictStrategy.Companion.REPLACE
|
||||
import androidx.room.Query
|
||||
import androidx.room.Transaction
|
||||
import androidx.room.Update
|
||||
import androidx.room.Upsert
|
||||
import com.nextcloud.talk.data.database.model.ConversationEntity
|
||||
import kotlinx.coroutines.flow.Flow
|
||||
import kotlinx.coroutines.flow.first
|
||||
@ -26,15 +25,12 @@ interface ConversationsDao {
|
||||
@Query("SELECT * FROM Conversations where accountId = :accountId AND token = :token")
|
||||
fun getConversationForUser(accountId: Long, token: String): Flow<ConversationEntity?>
|
||||
|
||||
@Upsert()
|
||||
fun upsertConversations(conversationEntities: List<ConversationEntity>)
|
||||
|
||||
@Transaction
|
||||
suspend fun upsertConversations(accountId: Long, serverItems: List<ConversationEntity>) {
|
||||
serverItems.forEach { serverItem ->
|
||||
val existingItem = getConversationForUser(accountId, serverItem.token).first()
|
||||
if (existingItem != null) {
|
||||
val mergedItem = serverItem
|
||||
val mergedItem = serverItem.copy()
|
||||
mergedItem.messageDraft = existingItem.messageDraft
|
||||
updateConversation(mergedItem)
|
||||
} else {
|
||||
|
@ -192,7 +192,7 @@ class DummyConversationDaoImpl : ConversationsDao {
|
||||
|
||||
override fun getConversationForUser(accountId: Long, token: String): Flow<ConversationEntity?> = flowOf()
|
||||
|
||||
override fun upsertConversations(conversationEntities: List<ConversationEntity>) { /* */ }
|
||||
override suspend fun upsertConversations(accountId: Long, serverItems: List<ConversationEntity>) { /* */ }
|
||||
|
||||
override fun deleteConversations(conversationIds: List<String>) { /* */ }
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user