feat: Add conversation filtering for message requests (#830)

* feat: Message requests

* Apply contact sync message

* Filter based on message requests toggle

* Add message requests screen

* Implement message requests screen

* Handle message request buttons

* Handle approval syncing

* Display message request response

* Display pending message request

* Display pending message request

* Add approval migrations

* Send message request response

* Fix conversation filters

* Add approval migration

* Handle message request response

* Update message request response proto

* Update message request response handling

* Refresh message requests

* Show message request banner on new message request

* Message request item layout tweaks

* Fix latest unapproved conversation query

* Handle sent message request responses on restore

* QA feedback tweaks

* Remove send limit on message requests

* Config message handling tweaks

* Reverse conversation upon message request approval

* Remove read receipts, delete declined conversations

* Fix contact filtering in config messages

* Fix message request order and handle deletion

* Fix message request snippet on home screen

* Refresh message request list after decline or clearing all

* Fix message request reversal

* Fix message request notifications

* Disable media buttons for message requests

* Hide message request banner after reading

* Refresh message request banner
This commit is contained in:
ceokot
2022-03-04 08:46:39 +02:00
committed by GitHub
parent 55aa266769
commit 206505abe8
56 changed files with 2427 additions and 205 deletions

View File

@@ -158,6 +158,20 @@ class ConversationViewModelTest: BaseViewModelTest() {
)
}
@Test
fun `should accept message request`() = runBlockingTest {
viewModel.acceptMessageRequest()
verify(repository).acceptMessageRequest(threadId, recipient)
}
@Test
fun `should decline message request`() {
viewModel.declineMessageRequest()
verify(repository).declineMessageRequest(threadId, recipient)
}
@Test
fun `should remove shown message`() = runBlockingTest {
// Given that a message is generated

View File

@@ -0,0 +1,34 @@
package org.thoughtcrime.securesms.messagerequests
import org.junit.Test
import org.mockito.Mockito.mock
import org.mockito.Mockito.verify
import org.thoughtcrime.securesms.BaseViewModelTest
import org.thoughtcrime.securesms.database.model.ThreadRecord
import org.thoughtcrime.securesms.repository.ConversationRepository
class MessageRequestsViewModelTest : BaseViewModelTest() {
private val repository = mock(ConversationRepository::class.java)
private val viewModel: MessageRequestsViewModel by lazy {
MessageRequestsViewModel(repository)
}
@Test
fun `should delete message request`() = runBlockingTest {
val thread = mock(ThreadRecord::class.java)
viewModel.deleteMessageRequest(thread)
verify(repository).deleteMessageRequest(thread)
}
@Test
fun `should clear all message requests`() = runBlockingTest {
viewModel.clearAllMessageRequests()
verify(repository).clearAllMessageRequests()
}
}