Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -113,10 +113,14 @@ class MessageController @Inject constructor(
return getMessagesFromThread(thread, "$byFolderId AND $isNotScheduledMessage", includeDuplicates = false)
}

suspend fun getUnscheduledMessages(thread: Thread, includeDuplicates: Boolean): List<Message> {
suspend fun getUnscheduledMessagesFromThread(thread: Thread, includeDuplicates: Boolean): List<Message> {
return getMessagesFromThread(thread, isNotScheduledMessage, includeDuplicates)
}

fun getUnscheduledMessages(messages: List<Message>): List<Message> {
return messages.filter { message -> !message.isScheduledMessage }
}

private suspend fun getMessagesFromThread(thread: Thread, query: String, includeDuplicates: Boolean): List<Message> {
val messages = thread.messages.query(query).findSuspend()
if (includeDuplicates) {
Expand All @@ -135,6 +139,13 @@ class MessageController @Inject constructor(
messagesAsync.await() + duplicatesAsync.await()
}

suspend fun getMessagesAndDuplicates(messages: List<Message>): List<Message> {
return messages.flatMap { message ->
if (message.threads.isEmpty()) return@flatMap listOf(message)
getMessageAndDuplicates(message.threads.first(), message)
}
}

suspend fun getMessageAndDuplicates(thread: Thread, message: Message): List<Message> {
return listOf(message) + thread.duplicates.query("${Message::messageId.name} == $0", message.messageId).findSuspend()
}
Expand Down
6 changes: 4 additions & 2 deletions app/src/main/java/com/infomaniak/mail/ui/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@ import com.infomaniak.mail.ui.main.folder.TwoPaneFragment
import com.infomaniak.mail.ui.main.menuDrawer.MenuDrawerFragment
import com.infomaniak.mail.ui.main.onboarding.PermissionsOnboardingPagerFragment
import com.infomaniak.mail.ui.main.search.SearchFragmentArgs
import com.infomaniak.mail.ui.main.thread.actions.ActionsViewModel
import com.infomaniak.mail.ui.newMessage.NewMessageActivity
import com.infomaniak.mail.ui.sync.SyncAutoConfigActivity
import com.infomaniak.mail.ui.sync.discovery.SyncDiscoveryManager
Expand Down Expand Up @@ -113,6 +114,7 @@ class MainActivity : BaseActivity() {

private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
private val mainViewModel: MainViewModel by viewModels()
private val actionsViewModel: ActionsViewModel by viewModels()

private val navigationArgs: MainActivityArgs? by lazy { intent?.extras?.let(MainActivityArgs::fromBundle) }

Expand Down Expand Up @@ -269,7 +271,7 @@ class MainActivity : BaseActivity() {
}

private fun observeActivityDialogLoaderReset() {
mainViewModel.activityDialogLoaderResetTrigger.observe(this) { descriptionDialog.resetLoadingAndDismiss() }
actionsViewModel.activityDialogLoaderResetTrigger.observe(this) { descriptionDialog.resetLoadingAndDismiss() }
}

private fun observeDraftWorkerResults() {
Expand Down Expand Up @@ -488,7 +490,7 @@ class MainActivity : BaseActivity() {
getAnchor = ::getAnchor,
onUndoData = {
trackEvent(MatomoMail.MatomoCategory.Snackbar, MatomoName.Undo)
mainViewModel.undoAction(it)
actionsViewModel.undoAction(it, mainViewModel.currentMailbox.value!!)
},
)
}
Expand Down
Loading