Cleanup - Methods renaming and removing unused code

- Removed messageDraftResult LiveData as not used anymore
- Removed setOfflineDraftSaved as value was set but never read
- Rename findMessageByIdBlocking method to change non-blocking method to
  using dispatcher from constructor
This commit is contained in:
Marino Meneghel 2020-12-17 16:12:39 +01:00
parent c089f67131
commit 5380a01bc1
38 changed files with 87 additions and 108 deletions

View File

@ -142,7 +142,7 @@ class MailboxViewModel @ViewModelInject constructor(
withContext(Dispatchers.Default) {
while (iterator.hasNext()) {
val messageId = iterator.next()
val message = messageDetailsRepository.findMessageById(messageId, Dispatchers.Default)
val message = messageDetailsRepository.findMessageById(messageId)
if (message != null) {
val currentLabelsIds = message.labelIDsNotIncludingLocations

View File

@ -2217,7 +2217,6 @@ public class ComposeMessageActivity
Message localMessage = messageEvent.getContentIfNotHandled();
if (localMessage != null) {
composeMessageViewModel.setOfflineDraftSaved(false);
String aliasAddress = composeMessageViewModel.getMessageDataResult().getAddressEmailAlias();
MessageSender messageSender;

View File

@ -54,7 +54,6 @@ class MessageBuilderData(
val isRespondInlineChecked: Boolean,
val showImages: Boolean,
val showRemoteContent: Boolean,
val offlineDraftSaved: Boolean,
val initialMessageContent: String,
val decryptedMessage: String,
val isMessageBodyVisible: Boolean,
@ -90,7 +89,6 @@ class MessageBuilderData(
private var isRespondInlineChecked: Boolean = false
private var showImages: Boolean = false
private var showRemoteContent: Boolean = false
private var offlineDraftSaved: Boolean = false
private var initialMessageContent: String = ""
private var decryptedMessage: String = ""
private var isMessageBodyVisible: Boolean = false
@ -129,7 +127,6 @@ class MessageBuilderData(
this.isRespondInlineChecked = oldObject.isRespondInlineChecked
this.showImages = oldObject.showImages
this.showRemoteContent = oldObject.showRemoteContent
this.offlineDraftSaved = oldObject.offlineDraftSaved
this.initialMessageContent = oldObject.initialMessageContent
this.isMessageBodyVisible = oldObject.isMessageBodyVisible
this.quotedHeader = oldObject.quotedHeader
@ -218,9 +215,6 @@ class MessageBuilderData(
fun showRemoteContent(showRemoteContent: Boolean) =
apply { this.showRemoteContent = showRemoteContent }
fun offlineDraftSaved(offlineDraftSaved: Boolean) =
apply { this.offlineDraftSaved = offlineDraftSaved }
fun initialMessageContent(initialMessageContent: String) =
apply { this.initialMessageContent = initialMessageContent }
@ -265,7 +259,6 @@ class MessageBuilderData(
isRespondInlineChecked,
showImages,
showRemoteContent,
offlineDraftSaved,
initialMessageContent,
decryptedMessage,
isMessageBodyVisible,

View File

@ -1771,7 +1771,7 @@ class MailboxActivity :
) : AsyncTask<Unit, Unit, Message>() {
override fun doInBackground(vararg params: Unit): Message? =
messageDetailsRepository.findMessageById(message.messageId!!)
messageDetailsRepository.findMessageByIdBlocking(message.messageId!!)
public override fun onPostExecute(savedMessage: Message?) {
val mailboxActivity = mailboxActivity.get()

View File

@ -22,7 +22,6 @@ import android.os.AsyncTask
import ch.protonmail.android.activities.messageDetails.repository.MessageDetailsRepository
import ch.protonmail.android.adapters.messages.MessagesRecyclerViewAdapter
import ch.protonmail.android.events.ParentEvent
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.runBlocking
internal class OnParentEventTask(private val messageDetailsRepository: MessageDetailsRepository,
@ -33,7 +32,7 @@ internal class OnParentEventTask(private val messageDetailsRepository: MessageDe
runBlocking {
val messageId = event.parentId
messageDetailsRepository.findMessageById(messageId, Dispatchers.IO)?.apply {
messageDetailsRepository.findMessageById(messageId)?.apply {
isReplied = event.isReplied == 1
isRepliedAll = event.isRepliedAll == 1
isForwarded = event.isForwarded == 1

View File

@ -23,7 +23,9 @@ import androidx.fragment.app.FragmentManager
import ch.protonmail.android.activities.dialogs.ManageLabelsDialogFragment
import ch.protonmail.android.activities.messageDetails.repository.MessageDetailsRepository
import ch.protonmail.android.api.models.room.messages.Message
import java.util.*
import java.util.ArrayList
import java.util.HashMap
import java.util.HashSet
/**
* Created by Kamil Rajtar on 24.07.18.
@ -33,7 +35,7 @@ internal class ShowLabelsManagerDialogTask(private val fragmentManager: Fragment
private val messageIds:List<String>):AsyncTask<Void,Void,List<Message>>() {
override fun doInBackground(vararg voids:Void):List<Message> {
return messageIds.filter {!it.isEmpty()}.mapNotNull(messageDetailsRepository::findMessageById)
return messageIds.filter { !it.isEmpty() }.mapNotNull(messageDetailsRepository::findMessageByIdBlocking)
}
override fun onPostExecute(messages:List<Message>) {

View File

@ -88,29 +88,29 @@ class MessageDetailsRepository @Inject constructor(
}
fun findMessageByIdAsync(messageId: String): LiveData<Message> =
messagesDao.findMessageByIdAsync(messageId).asyncMap(readMessageBodyFromFileIfNeeded)
messagesDao.findMessageByIdAsync(messageId).asyncMap(readMessageBodyFromFileIfNeeded)
fun findSearchMessageByIdAsync(messageId: String): LiveData<Message> =
searchDatabaseDao.findMessageByIdAsync(messageId).asyncMap(readMessageBodyFromFileIfNeeded)
searchDatabaseDao.findMessageByIdAsync(messageId).asyncMap(readMessageBodyFromFileIfNeeded)
suspend fun findMessageById(messageId: String, dispatcher: CoroutineDispatcher) =
withContext(dispatcher) {
findMessageById(messageId)
}
suspend fun findMessageById(messageId: String) =
withContext(dispatchers.Io) {
findMessageByIdBlocking(messageId)
}
suspend fun findSearchMessageById(messageId: String, dispatcher: CoroutineDispatcher) =
withContext(dispatcher) {
searchDatabaseDao.findMessageById(messageId)?.apply { readMessageBodyFromFileIfNeeded(this) }
}
withContext(dispatcher) {
searchDatabaseDao.findMessageById(messageId)?.apply { readMessageBodyFromFileIfNeeded(this) }
}
suspend fun findMessageByMessageDbId(dbId: Long, dispatcher: CoroutineDispatcher) : Message? =
withContext(dispatcher) {
suspend fun findMessageByMessageDbId(dbId: Long, dispatcher: CoroutineDispatcher): Message? =
withContext(dispatcher) {
findMessageByMessageDbId(dbId)
}
fun findMessageById(messageId: String): Message? =
messagesDao.findMessageById(messageId)?.apply { readMessageBodyFromFileIfNeeded(this) }
fun findMessageByIdBlocking(messageId: String): Message? =
messagesDao.findMessageById(messageId)?.apply { readMessageBodyFromFileIfNeeded(this) }
fun findSearchMessageById(messageId: String): Message? =
searchDatabaseDao.findMessageById(messageId)?.apply { readMessageBodyFromFileIfNeeded(this) }

View File

@ -425,7 +425,7 @@ internal class MessageDetailsViewModel @ViewModelInject constructor(
}
} else {
val savedMessage = findMessageById(messageId, dispatchers.Io)
val savedMessage = findMessageById(messageId)
if (savedMessage != null) {
messageResponse.message.writeTo(savedMessage)
saveMessageInDB(savedMessage)

View File

@ -360,7 +360,7 @@ class EventHandler @AssistedInject constructor(
when (type) {
EventType.CREATE -> {
try {
val savedMessage = messageDetailsRepository.findMessageById(messageID)
val savedMessage = messageDetailsRepository.findMessageByIdBlocking(messageID)
savedMessage.ifNullElse(
{
messageDetailsRepository.saveMessageInDB(messageFactory.createMessage(event.message))
@ -375,7 +375,7 @@ class EventHandler @AssistedInject constructor(
}
EventType.DELETE -> {
val message = messageDetailsRepository.findMessageById(messageID)
val message = messageDetailsRepository.findMessageByIdBlocking(messageID)
if (message != null) {
messagesDatabase.deleteMessage(message)
}
@ -383,7 +383,7 @@ class EventHandler @AssistedInject constructor(
EventType.UPDATE -> {
// update Message body
val message = messageDetailsRepository.findMessageById(messageID)
val message = messageDetailsRepository.findMessageByIdBlocking(messageID)
stagedMessages[messageID]?.let {
val dbTime = message?.time ?: 0
val serverTime = it.time
@ -414,7 +414,7 @@ class EventHandler @AssistedInject constructor(
messageID: String,
item: EventResponse.MessageEventBody
) {
val message = messageDetailsRepository.findMessageById(messageID)
val message = messageDetailsRepository.findMessageByIdBlocking(messageID)
val newMessage = item.message
if (message != null) {

View File

@ -240,7 +240,7 @@ class MessagesService : JobIntentService() {
if (refreshMessages) messageDetailsRepository.deleteMessagesByLocation(location)
messageList.asSequence().map { msg ->
unixTime = msg.time
val savedMessage = messageDetailsRepository.findMessageById(msg.messageId!!)
val savedMessage = messageDetailsRepository.findMessageByIdBlocking(msg.messageId!!)
msg.setLabelIDs(msg.getEventLabelIDs())
msg.location = location.messageLocationTypeValue
msg.setFolderLocation(messagesDb)
@ -312,7 +312,7 @@ class MessagesService : JobIntentService() {
if (refreshMessages) messageDetailsRepository.deleteMessagesByLabel(labelId)
messageList.asSequence().map { msg ->
unixTime = msg.time
val savedMessage = messageDetailsRepository.findMessageById(msg.messageId!!)
val savedMessage = messageDetailsRepository.findMessageByIdBlocking(msg.messageId!!)
msg.setLabelIDs(msg.getEventLabelIDs())
msg.location = location.messageLocationTypeValue
msg.setFolderLocation(messagesDb)

View File

@ -109,7 +109,7 @@ class DownloadEmbeddedAttachmentsWorker @WorkerInject constructor(
if (message != null) { // use search or standard message database, if Message comes from search
attachments = messageDetailsRepository.findSearchAttachmentsByMessageId(messageId)
} else {
message = messageDetailsRepository.findMessageById(messageId)
message = messageDetailsRepository.findMessageByIdBlocking(messageId)
attachments = messageDetailsRepository.findAttachmentsByMessageId(messageId)
}

View File

@ -150,7 +150,7 @@ class ComposeMessageRepository @Inject constructor(
withContext(dispatcher) {
var message: Message? = null
if (!TextUtils.isEmpty(draftId)) {
message = messageDetailsRepository.findMessageById(draftId)
message = messageDetailsRepository.findMessageByIdBlocking(draftId)
}
message
}
@ -216,7 +216,7 @@ class ComposeMessageRepository @Inject constructor(
fun markMessageRead(messageId: String) {
GlobalScope.launch(Dispatchers.IO) {
messageDetailsRepository.findMessageById(messageId)?.let { savedMessage ->
messageDetailsRepository.findMessageByIdBlocking(messageId)?.let { savedMessage ->
val read = savedMessage.isRead
if (!read) {
jobManager.addJobInBackground(PostReadJob(listOf(savedMessage.messageId)))

View File

@ -108,7 +108,6 @@ class ComposeMessageViewModel @Inject constructor(
private val _loadingDraftResult: MutableLiveData<Message> = MutableLiveData()
private val _messageResultError: MutableLiveData<Event<PostResult>> = MutableLiveData()
private val _openAttachmentsScreenResult: MutableLiveData<List<LocalAttachment>> = MutableLiveData()
private val _messageDraftResult: MutableLiveData<Message> = MutableLiveData()
private val _buildingMessageCompleted: MutableLiveData<Event<Message>> = MutableLiveData()
private val _dbIdWatcher: MutableLiveData<Long> = MutableLiveData()
private val _fetchMessageDetailsEvent: MutableLiveData<Event<MessageBuilderData>> = MutableLiveData()
@ -212,9 +211,6 @@ class ComposeMessageViewModel @Inject constructor(
get() = _parentId
// endregion
val messageDraftResult: LiveData<Message>
get() = _messageDraftResult
private val loggedInUsernames = if (userManager.user.combinedContacts) {
AccountManager.getInstance(ProtonMailApplication.getApplication().applicationContext).getLoggedInUsers()
} else {
@ -428,7 +424,6 @@ class ComposeMessageViewModel @Inject constructor(
//endregion
} else {
//region new draft here
setOfflineDraftSaved(true)
if (draftId.isEmpty() && message.messageId.isNullOrEmpty()) {
val newDraftId = UUID.randomUUID().toString()
_draftId.set(newDraftId)
@ -474,20 +469,18 @@ class ComposeMessageViewModel @Inject constructor(
}
private suspend fun onDraftSaved(savedDraftId: String) {
withContext(dispatchers.Io) {
val draft = requireNotNull(messageDetailsRepository.findMessageById(savedDraftId))
val draft = requireNotNull(messageDetailsRepository.findMessageById(savedDraftId))
viewModelScope.launch(dispatchers.Main) {
if (_draftId.get().isNotEmpty() && draft.messageId.isNullOrEmpty().not()) {
draft.localId?.let {
composeMessageRepository.deleteMessageById(it)
}
viewModelScope.launch(dispatchers.Main) {
if (_draftId.get().isNotEmpty() && draft.messageId.isNullOrEmpty().not()) {
draft.localId?.let {
composeMessageRepository.deleteMessageById(it)
}
_draftId.set(draft.messageId)
watchForMessageSent()
}
_savingDraftComplete.postValue(draft)
_draftId.set(draft.messageId)
watchForMessageSent()
}
_savingDraftComplete.postValue(draft)
}
private suspend fun calculateNewAttachments(uploadAttachments: Boolean): List<String> {
@ -1100,13 +1093,6 @@ class ComposeMessageViewModel @Inject constructor(
.build()
}
fun setOfflineDraftSaved(offlineDraftSaved: Boolean) {
_messageDataResult = MessageBuilderData.Builder()
.fromOld(_messageDataResult)
.offlineDraftSaved(offlineDraftSaved)
.build()
}
fun setInitialMessageContent(initialMessageContent: String) {
_messageDataResult = MessageBuilderData.Builder()
.fromOld(_messageDataResult)

View File

@ -167,7 +167,7 @@ class ProcessPushNotificationDataWorker @WorkerInject constructor(
} else {
fetchMessageMetadata(messageId)
}
?: messageDetailsRepository.findMessageById(messageId)
?: messageDetailsRepository.findMessageByIdBlocking(messageId)
}
private fun fetchMessageMetadata(messageId: String): Message? {
@ -180,7 +180,7 @@ class ProcessPushNotificationDataWorker @WorkerInject constructor(
message = messages[0]
}
if (message != null) {
val savedMessage = messageDetailsRepository.findMessageById(message.messageId!!)
val savedMessage = messageDetailsRepository.findMessageByIdBlocking(message.messageId!!)
if (savedMessage != null) {
message.isInline = savedMessage.isInline
}
@ -188,7 +188,7 @@ class ProcessPushNotificationDataWorker @WorkerInject constructor(
messageDetailsRepository.saveMessageInDB(message)
} else {
// check if the message is already in local store
message = messageDetailsRepository.findMessageById(messageId)
message = messageDetailsRepository.findMessageByIdBlocking(messageId)
}
}
} catch (error: Exception) {
@ -202,7 +202,7 @@ class ProcessPushNotificationDataWorker @WorkerInject constructor(
try {
val messageResponse: MessageResponse = protonMailApiManager.messageDetail(messageId)
message = messageResponse.message
val savedMessage = messageDetailsRepository.findMessageById(messageId)
val savedMessage = messageDetailsRepository.findMessageByIdBlocking(messageId)
if (savedMessage != null) {
message.isInline = savedMessage.isInline
}

View File

@ -67,7 +67,7 @@ public class ApplyLabelJob extends ProtonMailEndlessJob {
.getDatabase();
int totalUnread = 0;
for (String messageId : messageIds) {
Message message = getMessageDetailsRepository().findMessageById(messageId);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(messageId);
if (message == null) {
continue;
}

View File

@ -128,7 +128,7 @@ public class CreateAndPostDraftJob extends ProtonMailBaseJob {
newDraft.setParentID(mParentId);
newDraft.setAction(mActionType.getMessageActionTypeValue());
if(!isTransient) {
parentMessage = getMessageDetailsRepository().findMessageById(mParentId);
parentMessage = getMessageDetailsRepository().findMessageByIdBlocking(mParentId);
} else {
parentMessage = getMessageDetailsRepository().findSearchMessageById(mParentId);
}
@ -136,7 +136,7 @@ public class CreateAndPostDraftJob extends ProtonMailBaseJob {
String addressId = message.getAddressID();
String encryptedMessage = message.getMessageBody();
if (!TextUtils.isEmpty(message.getMessageId())) {
Message savedMessage = getMessageDetailsRepository().findMessageById(message.getMessageId());
Message savedMessage = getMessageDetailsRepository().findMessageByIdBlocking(message.getMessageId());
if (savedMessage != null) {
encryptedMessage = savedMessage.getMessageBody();
}
@ -195,7 +195,7 @@ public class CreateAndPostDraftJob extends ProtonMailBaseJob {
pendingForSending.setMessageId(newId);
pendingActionsDatabase.insertPendingForSend(pendingForSending);
}
Message offlineDraft = getMessageDetailsRepository().findMessageById(oldId);
Message offlineDraft = getMessageDetailsRepository().findMessageByIdBlocking(oldId);
if (offlineDraft != null) {
getMessageDetailsRepository().deleteMessage(offlineDraft);
}
@ -266,7 +266,7 @@ public class CreateAndPostDraftJob extends ProtonMailBaseJob {
@Override
public void onRun() throws Throwable {
PendingActionsDatabase pendingActionsDatabase = PendingActionsDatabaseFactory.Companion.getInstance(getApplicationContext()).getDatabase();
Message message = getMessageDetailsRepository().findMessageById(mMessageId);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(mMessageId);
User user = getUserManager().getUser(mUsername);
if (user == null) {
pendingActionsDatabase.deletePendingUploadByMessageId(mMessageId, mOldMessageId);

View File

@ -47,7 +47,7 @@ public class FetchDraftDetailJob extends ProtonMailBaseJob {
try {
final Message message = getApi().messageDetail(mMessageId).getMessage();
Message savedMessage = getMessageDetailsRepository().findMessageById(message.getMessageId());
Message savedMessage = getMessageDetailsRepository().findMessageByIdBlocking(message.getMessageId());
if (savedMessage != null) {
message.setInline(savedMessage.isInline());
}

View File

@ -53,7 +53,7 @@ public class FetchMessageDetailJob extends ProtonMailBaseJob {
try {
final MessageResponse messageResponse = getApi().messageDetail(mMessageId);
final Message message = messageResponse.getMessage();
Message savedMessage = getMessageDetailsRepository().findMessageById(message.getMessageId());
Message savedMessage = getMessageDetailsRepository().findMessageByIdBlocking(message.getMessageId());
final FetchMessageDetailEvent event = new FetchMessageDetailEvent(true, mMessageId);
if (savedMessage != null) {
message.writeTo(savedMessage);

View File

@ -58,7 +58,7 @@ public class MoveToFolderJob extends ProtonMailBaseJob {
.getDatabase();
int totalUnread = 0;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (!TextUtils.isEmpty(mLabelId)) {
int location = message.getLocation();

View File

@ -58,7 +58,7 @@ public class PostArchiveJob extends ProtonMailCounterJob {
.getDatabase();
int totalUnread = 0;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (markMessageLocally(countersDatabase, message)) {
totalUnread++;

View File

@ -39,7 +39,7 @@ public class PostDraftJob extends ProtonMailEndlessJob {
public void onAdded() {
//TODO make a bulk operation
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
message.setLocation(Constants.MessageLocationType.DRAFT.getMessageLocationTypeValue());
getMessageDetailsRepository().saveMessageInDB(message);

View File

@ -58,7 +58,7 @@ public class PostInboxJob extends ProtonMailCounterJob {
int totalUnread = 0;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (!message.isRead()) {
UnreadLocationCounter unreadLocationCounter = countersDatabase.findUnreadLocationById(message.getLocation());

View File

@ -49,7 +49,7 @@ public class PostReadJob extends ProtonMailEndlessJob {
Constants.MessageLocationType messageLocation = Constants.MessageLocationType.INVALID;
boolean starred = false;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
starred = message.isStarred() != null && message.isStarred();
messageLocation = Constants.MessageLocationType.Companion.fromInt(message.getLocation());

View File

@ -58,7 +58,7 @@ public class PostSpamJob extends ProtonMailCounterJob {
.getDatabase();
int totalUnread = 0;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (markMessageLocally(countersDatabase,message)) {
totalUnread++;

View File

@ -53,7 +53,7 @@ public class PostTrashJob extends ProtonMailCounterJob {
int totalUnread = 0;
for (String id : mMessageIds) {
Message message = getMessageDetailsRepository().findMessageById(id);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (!message.isRead()) {
UnreadLocationCounter unreadLocationCounter = countersDatabase.findUnreadLocationById(message.getLocation());

View File

@ -62,7 +62,7 @@ public class PostTrashJobV2 extends ProtonMailCounterJob {
.getDatabase();
int totalUnread = 0;
for (String id : mMessageIds) {
Message message = getMessageDetailsRepository().findMessageById(id);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if (!message.isRead()) {
UnreadLocationCounter unreadLocationCounter = countersDatabase.findUnreadLocationById(message.getLocation());

View File

@ -49,7 +49,7 @@ public class PostUnreadJob extends ProtonMailEndlessJob {
Constants.MessageLocationType messageLocation = Constants.MessageLocationType.INVALID;
boolean starred = false;
for (String id : mMessageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
starred = message.isStarred() !=null && message.isStarred();
messageLocation = Constants.MessageLocationType.Companion.fromInt(message.getLocation());

View File

@ -50,7 +50,7 @@ public class PostUnstarJob extends ProtonMailEndlessJob {
Constants.MessageLocationType messageLocation = Constants.MessageLocationType.INVALID;
boolean isUnread = false;
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
messageLocation = Constants.MessageLocationType.Companion.fromInt(message.getLocation());
isUnread = !message.isRead();

View File

@ -53,7 +53,7 @@ public abstract class ProtonMailCounterJob extends ProtonMailEndlessJob {
int totalUnread = 0;
List<String> messageIds = getMessageIds();
for (String id : messageIds) {
final Message message = getMessageDetailsRepository().findMessageById(id);
final Message message = getMessageDetailsRepository().findMessageByIdBlocking(id);
if (message != null) {
if ( !message.isRead() ) {
UnreadLocationCounter unreadLocationCounter = countersDatabase.findUnreadLocationById(message.getLocation());

View File

@ -51,7 +51,7 @@ public class RemoveLabelJob extends ProtonMailBaseJob {
.getDatabase();
int totalUnread = 0;
for (String messageId : messageIds) {
Message message = getMessageDetailsRepository().findMessageById(messageId);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(messageId);
if (message == null) {
continue;
}
@ -76,7 +76,7 @@ public class RemoveLabelJob extends ProtonMailBaseJob {
int totalUnread = 0;
for (String messageId : messageIds) {
Message message = getMessageDetailsRepository().findMessageById(messageId);
Message message = getMessageDetailsRepository().findMessageByIdBlocking(messageId);
if (message == null) {
continue;
}

View File

@ -82,7 +82,7 @@ class NotificationReceiver : BroadcastReceiver() {
messageId: String
) {
withContext(Dispatchers.Default) {
val message = messageDetailsRepository.findMessageById(messageId)
val message = messageDetailsRepository.findMessageByIdBlocking(messageId)
if (message != null) {
val job: Job = PostTrashJobV2(listOf(message.messageId), null)
jobManager.addJobInBackground(job)

View File

@ -118,7 +118,7 @@ class SaveDraft @Inject constructor(
updatePendingForSendMessage(createdDraftId, localDraftId)
deleteOfflineDraft(localDraftId)
messageDetailsRepository.findMessageById(createdDraftId.orEmpty())?.let {
messageDetailsRepository.findMessageByIdBlocking(createdDraftId.orEmpty())?.let {
val uploadResult = uploadAttachments(params.newAttachmentIds, it, addressCrypto)
if (uploadResult is UploadAttachments.Result.Failure) {
return@withContext Result.UploadDraftAttachmentsFailed
@ -135,7 +135,7 @@ class SaveDraft @Inject constructor(
}
private fun deleteOfflineDraft(localDraftId: String) {
val offlineDraft = messageDetailsRepository.findMessageById(localDraftId)
val offlineDraft = messageDetailsRepository.findMessageByIdBlocking(localDraftId)
offlineDraft?.let {
messageDetailsRepository.deleteMessage(offlineDraft)
}

View File

@ -52,7 +52,7 @@ class DeleteMessage @Inject constructor(
for (id in validMessageIdList) {
ensureActive()
messageDetailsRepository.findMessageById(id)?.let { message ->
messageDetailsRepository.findMessageByIdBlocking(id)?.let { message ->
message.deleted = true
messagesToSave.add(message)
}

View File

@ -94,7 +94,7 @@ class CreateDraftWorker @WorkerInject constructor(
parentId?.let {
createDraftRequest.setParentID(parentId)
createDraftRequest.action = getInputActionType().messageActionTypeValue
val parentMessage = messageDetailsRepository.findMessageById(parentId)
val parentMessage = messageDetailsRepository.findMessageByIdBlocking(parentId)
val attachments = parentMessage?.attachments(messageDetailsRepository.databaseProvider.provideMessagesDao())
buildDraftRequestParentAttachments(attachments, senderAddress).forEach {

View File

@ -112,11 +112,11 @@ class ComposeMessageViewModelTest : CoroutinesTest {
val testObserver = viewModel.savingDraftComplete.testObserver()
givenViewModelPropertiesAreInitialised()
coEvery { saveDraft(any()) } returns flowOf(SaveDraft.Result.Success(createdDraftId))
every { messageDetailsRepository.findMessageById(createdDraftId) } returns createdDraft
every { messageDetailsRepository.findMessageByIdBlocking(createdDraftId) } returns createdDraft
viewModel.saveDraft(message, hasConnectivity = false)
verify { messageDetailsRepository.findMessageById(createdDraftId) }
verify { messageDetailsRepository.findMessageByIdBlocking(createdDraftId) }
assertEquals(createdDraft, testObserver.observedValues[0])
}
}
@ -129,7 +129,7 @@ class ComposeMessageViewModelTest : CoroutinesTest {
val createdDraft = Message(messageId = createdDraftId, localId = localDraftId)
givenViewModelPropertiesAreInitialised()
coEvery { saveDraft(any()) } returns flowOf(SaveDraft.Result.Success(createdDraftId))
every { messageDetailsRepository.findMessageById(createdDraftId) } returns createdDraft
every { messageDetailsRepository.findMessageByIdBlocking(createdDraftId) } returns createdDraft
viewModel.saveDraft(Message(), hasConnectivity = false)
@ -145,7 +145,7 @@ class ComposeMessageViewModelTest : CoroutinesTest {
val createdDraft = Message(messageId = createdDraftId, localId = localDraftId)
givenViewModelPropertiesAreInitialised()
coEvery { saveDraft(any()) } returns flowOf(SaveDraft.Result.Success(createdDraftId))
every { messageDetailsRepository.findMessageById(createdDraftId) } returns createdDraft
every { messageDetailsRepository.findMessageByIdBlocking(createdDraftId) } returns createdDraft
viewModel.saveDraft(Message(), hasConnectivity = false)

View File

@ -301,7 +301,7 @@ class SaveDraftTest : CoroutinesTest {
localId = localDraftId
}
coEvery { messageDetailsRepository.saveMessageLocally(message) } returns 9833L
every { messageDetailsRepository.findMessageById("45623") } returns message
every { messageDetailsRepository.findMessageByIdBlocking("45623") } returns message
every { pendingActionsDao.findPendingSendByDbId(9833L) } returns null
every { pendingActionsDao.findPendingSendByOfflineMessageId(localDraftId) } returns PendingSend()
coEvery { uploadAttachments(any(), any(), any()) } returns UploadAttachments.Result.Success
@ -347,8 +347,8 @@ class SaveDraftTest : CoroutinesTest {
val workerStatusFlow = buildCreateDraftWorkerResponse(WorkInfo.State.SUCCEEDED, workOutputData)
val newAttachmentIds = listOf("2345", "453")
coEvery { messageDetailsRepository.saveMessageLocally(message) } returns 9833L
every { messageDetailsRepository.findMessageById("45623") } returns message
every { messageDetailsRepository.findMessageById("createdDraftMessageId345") } returns apiDraft
every { messageDetailsRepository.findMessageByIdBlocking("45623") } returns message
every { messageDetailsRepository.findMessageByIdBlocking("createdDraftMessageId345") } returns apiDraft
every { pendingActionsDao.findPendingSendByDbId(9833L) } returns null
every { pendingActionsDao.findPendingSendByOfflineMessageId(localDraftId) } returns PendingSend()
coEvery { uploadAttachments(any(), apiDraft, any()) } returns UploadAttachments.Result.Success
@ -390,7 +390,7 @@ class SaveDraftTest : CoroutinesTest {
)
val workerStatusFlow = buildCreateDraftWorkerResponse(WorkInfo.State.FAILED, workOutputData)
coEvery { messageDetailsRepository.saveMessageLocally(message) } returns 9833L
every { messageDetailsRepository.findMessageById("45623") } returns message
every { messageDetailsRepository.findMessageByIdBlocking("45623") } returns message
every { pendingActionsDao.findPendingSendByDbId(9833L) } returns null
every {
createDraftScheduler.enqueue(
@ -430,7 +430,7 @@ class SaveDraftTest : CoroutinesTest {
)
val workerStatusFlow = buildCreateDraftWorkerResponse(WorkInfo.State.SUCCEEDED, workOutputData)
coEvery { messageDetailsRepository.saveMessageLocally(message) } returns 9833L
every { messageDetailsRepository.findMessageById("45623") } returns message
every { messageDetailsRepository.findMessageByIdBlocking("45623") } returns message
every { pendingActionsDao.findPendingSendByDbId(9833L) } returns null
coEvery { uploadAttachments(newAttachmentIds, any(), any()) } returns Failure("Can't upload attachments")
every {
@ -471,8 +471,8 @@ class SaveDraftTest : CoroutinesTest {
val workerStatusFlow = buildCreateDraftWorkerResponse(WorkInfo.State.SUCCEEDED, workOutputData)
val newAttachmentIds = listOf("2345", "453")
coEvery { messageDetailsRepository.saveMessageLocally(message) } returns 9833L
every { messageDetailsRepository.findMessageById("45623") } returns message
every { messageDetailsRepository.findMessageById("createdDraftMessageId345") } returns apiDraft
every { messageDetailsRepository.findMessageByIdBlocking("45623") } returns message
every { messageDetailsRepository.findMessageByIdBlocking("createdDraftMessageId345") } returns apiDraft
every { pendingActionsDao.findPendingSendByDbId(9833L) } returns null
every { pendingActionsDao.findPendingSendByOfflineMessageId(localDraftId) } returns PendingSend()
coEvery { uploadAttachments(any(), apiDraft, any()) } returns UploadAttachments.Result.Success

View File

@ -66,7 +66,7 @@ class DeleteMessageTest {
val operation = mockk<Operation>(relaxed = true)
every { db.findPendingUploadByMessageId(any()) } returns null
every { db.findPendingSendByMessageId(any()) } returns null
every { repository.findMessageById(messId) } returns message
every { repository.findMessageByIdBlocking(messId) } returns message
every { repository.saveMessageInDB(message) } returns 1L
every { repository.findSearchMessageById(messId) } returns null
every { repository.saveMessagesInOneTransaction(any()) } returns Unit
@ -93,7 +93,7 @@ class DeleteMessageTest {
val searchMessage = mockk<Message>(relaxed = true)
every { db.findPendingUploadByMessageId(any()) } returns null
every { db.findPendingSendByMessageId(any()) } returns null
every { repository.findMessageById(messId) } returns null
every { repository.findMessageByIdBlocking(messId) } returns null
every { repository.findSearchMessageById(messId) } returns searchMessage
every { repository.saveSearchMessageInDB(searchMessage) } returns Unit
every { repository.saveMessagesInOneTransaction(any()) } returns Unit
@ -121,7 +121,7 @@ class DeleteMessageTest {
val operation = mockk<Operation>(relaxed = true)
every { db.findPendingUploadByMessageId(any()) } returns pendingUpload
every { db.findPendingSendByMessageId(any()) } returns null
every { repository.findMessageById(messId) } returns message
every { repository.findMessageByIdBlocking(messId) } returns message
every { repository.saveMessageInDB(message) } returns 1L
every { repository.findSearchMessageById(messId) } returns null
every { repository.saveMessagesInOneTransaction(any()) } returns Unit
@ -151,7 +151,7 @@ class DeleteMessageTest {
val operation = mockk<Operation>(relaxed = true)
every { db.findPendingUploadByMessageId(any()) } returns null
every { db.findPendingSendByMessageId(any()) } returns pendingSend
every { repository.findMessageById(messId) } returns null
every { repository.findMessageByIdBlocking(messId) } returns null
every { repository.findSearchMessageById(messId) } returns message
every { repository.saveMessageInDB(message) } returns 1L
every { repository.saveSearchMessageInDB(message) } returns Unit

View File

@ -200,7 +200,7 @@ class CreateDraftWorkerTest : CoroutinesTest {
verify { apiDraftMessage.action = 2 }
// Always get parent message from messageDetailsDB, never from searchDB
// ignoring isTransient property as the values in the two DB appears to be the same
verify { messageDetailsRepository.findMessageById(parentId) }
verify { messageDetailsRepository.findMessageByIdBlocking(parentId) }
}
}
@ -312,7 +312,7 @@ class CreateDraftWorkerTest : CoroutinesTest {
givenPreviousSenderAddress(previousSenderAddressId)
every { messageDetailsRepository.findMessageByMessageDbId(messageDbId) } returns message
every { messageFactory.createDraftApiRequest(message) } answers { apiDraftMessage }
every { messageDetailsRepository.findMessageById(parentId) } returns parentMessage
every { messageDetailsRepository.findMessageByIdBlocking(parentId) } returns parentMessage
every { userManager.username } returns username
every { userManager.getUser(username).loadNew(username) } returns mockk {
every { findAddressById(Id("addressId835")) } returns senderAddress
@ -358,7 +358,7 @@ class CreateDraftWorkerTest : CoroutinesTest {
givenPreviousSenderAddress(previousSenderAddressId)
every { messageDetailsRepository.findMessageByMessageDbId(messageDbId) } returns message
every { messageFactory.createDraftApiRequest(message) } answers { apiDraftMessage }
every { messageDetailsRepository.findMessageById(parentId) } returns parentMessage
every { messageDetailsRepository.findMessageByIdBlocking(parentId) } returns parentMessage
every { userManager.username } returns "username93w"
// When
@ -394,7 +394,7 @@ class CreateDraftWorkerTest : CoroutinesTest {
givenPreviousSenderAddress("")
every { messageDetailsRepository.findMessageByMessageDbId(messageDbId) } returns message
every { messageFactory.createDraftApiRequest(message) } answers { apiDraftMessage }
every { messageDetailsRepository.findMessageById(parentId) } returns parentMessage
every { messageDetailsRepository.findMessageByIdBlocking(parentId) } returns parentMessage
// When
worker.doWork()
@ -434,7 +434,7 @@ class CreateDraftWorkerTest : CoroutinesTest {
givenPreviousSenderAddress("")
every { messageDetailsRepository.findMessageByMessageDbId(messageDbId) } returns message
every { messageFactory.createDraftApiRequest(message) } answers { apiDraftMessage }
every { messageDetailsRepository.findMessageById(parentId) } returns parentMessage
every { messageDetailsRepository.findMessageByIdBlocking(parentId) } returns parentMessage
// When
worker.doWork()