Skip to content

Commit 9592407

Browse files
committed
Modified the sending logic.| #328
1 parent d41694b commit 9592407

File tree

1 file changed

+45
-41
lines changed

1 file changed

+45
-41
lines changed

FlowCrypt/src/main/java/com/flowcrypt/email/jobscheduler/MessagesSenderJobService.java

Lines changed: 45 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -218,99 +218,99 @@ protected void onProgressUpdate(Boolean... values) {
218218
isFailed = values[0];
219219
}
220220

221-
private void sendQueuedMessages(Context context, AccountDao accountDao, MessageDaoSource messageDaoSource,
222-
ImapLabelsDaoSource imapLabelsDaoSource, File attachmentsCacheDirectory)
221+
private void sendQueuedMessages(Context context, AccountDao accountDao, MessageDaoSource msgDaoSource,
222+
ImapLabelsDaoSource imapLabelsDaoSource, File attsCacheDir)
223223
throws InterruptedException {
224-
List<GeneralMessageDetails> generalMessageDetailsList;
224+
List<GeneralMessageDetails> genMsgDetailsList;
225225
int uidOfLastMessage = 0;
226-
while (!CollectionUtils.isEmpty(generalMessageDetailsList = messageDaoSource
227-
.getOutboxMessages(context, accountDao.getEmail(), MessageState.QUEUED))) {
228-
Iterator<GeneralMessageDetails> iterator = generalMessageDetailsList.iterator();
229-
GeneralMessageDetails generalMessageDetails = null;
226+
while (!CollectionUtils.isEmpty(genMsgDetailsList = msgDaoSource.getOutboxMessages(context,
227+
accountDao.getEmail(), MessageState.QUEUED))) {
228+
Iterator<GeneralMessageDetails> iterator = genMsgDetailsList.iterator();
229+
GeneralMessageDetails genMsgDetails = null;
230230

231231
while (iterator.hasNext()) {
232232
GeneralMessageDetails generalMessageDetailsTemp = iterator.next();
233233
if (generalMessageDetailsTemp.getUid() > uidOfLastMessage) {
234-
generalMessageDetails = generalMessageDetailsTemp;
234+
genMsgDetails = generalMessageDetailsTemp;
235235
break;
236236
}
237237
}
238238

239-
if (generalMessageDetails == null) {
240-
generalMessageDetails = generalMessageDetailsList.get(0);
239+
if (genMsgDetails == null) {
240+
genMsgDetails = genMsgDetailsList.get(0);
241241
}
242242

243-
uidOfLastMessage = generalMessageDetails.getUid();
243+
uidOfLastMessage = genMsgDetails.getUid();
244244

245245
try {
246-
messageDaoSource.updateMessageState(context,
247-
generalMessageDetails.getEmail(), generalMessageDetails.getLabel(),
248-
generalMessageDetails.getUid(), MessageState.SENDING);
246+
msgDaoSource.updateMessageState(context, genMsgDetails.getEmail(), genMsgDetails.getLabel(),
247+
genMsgDetails.getUid(), MessageState.SENDING);
249248
Thread.sleep(2000);
250249

251250
AttachmentDaoSource attachmentDaoSource = new AttachmentDaoSource();
252-
List<AttachmentInfo> attachmentInfoList =
251+
List<AttachmentInfo> attInfoList =
253252
attachmentDaoSource.getAttachmentInfoList(context, accountDao.getEmail(),
254-
JavaEmailConstants.FOLDER_OUTBOX, generalMessageDetails.getUid());
253+
JavaEmailConstants.FOLDER_OUTBOX, genMsgDetails.getUid());
255254

256-
boolean isMessageSent = sendMessage(context, accountDao, messageDaoSource,
257-
generalMessageDetails, attachmentInfoList);
255+
boolean isMessageSent = sendMessage(context, accountDao, msgDaoSource, genMsgDetails, attInfoList);
258256

259257
if (!isMessageSent) {
260258
continue;
261259
}
262260

263-
generalMessageDetails = messageDaoSource.getMessage(context, accountDao.getEmail(),
264-
JavaEmailConstants.FOLDER_OUTBOX, generalMessageDetails.getUid());
261+
genMsgDetails = msgDaoSource.getMessage(context, accountDao.getEmail(),
262+
JavaEmailConstants.FOLDER_OUTBOX, genMsgDetails.getUid());
265263

266-
if (generalMessageDetails.getMessageState() == MessageState.SENT) {
267-
messageDaoSource.deleteMessageFromFolder(context, accountDao.getEmail(),
268-
JavaEmailConstants.FOLDER_OUTBOX, generalMessageDetails.getUid());
264+
if (genMsgDetails.getMessageState() == MessageState.SENT) {
265+
msgDaoSource.deleteMessageFromFolder(context, accountDao.getEmail(),
266+
JavaEmailConstants.FOLDER_OUTBOX, genMsgDetails.getUid());
269267

270-
if (!CollectionUtils.isEmpty(attachmentInfoList)) {
271-
deleteMessageAttachments(context, accountDao, attachmentsCacheDirectory,
272-
generalMessageDetails, attachmentDaoSource);
268+
if (!CollectionUtils.isEmpty(attInfoList)) {
269+
deleteMessageAttachments(context, accountDao, attsCacheDir,
270+
genMsgDetails, attachmentDaoSource);
273271
}
274272

275273
imapLabelsDaoSource.updateLabelMessageCount(context, accountDao.getEmail(),
276-
JavaEmailConstants.FOLDER_OUTBOX, messageDaoSource.getOutboxMessages(context,
277-
generalMessageDetails.getEmail()).size());
274+
JavaEmailConstants.FOLDER_OUTBOX, msgDaoSource.getOutboxMessages(context,
275+
genMsgDetails.getEmail()).size());
278276
}
279277
} catch (Exception e) {
280278
e.printStackTrace();
281279
ExceptionUtil.handleError(e);
282280

283281
if (!GeneralUtil.isInternetConnectionAvailable(context)) {
284-
messageDaoSource.updateMessageState(context, generalMessageDetails.getEmail(),
285-
generalMessageDetails.getLabel(), generalMessageDetails.getUid(), MessageState.QUEUED);
282+
if (genMsgDetails.getMessageState() != MessageState.SENT) {
283+
msgDaoSource.updateMessageState(context, genMsgDetails.getEmail(),
284+
genMsgDetails.getLabel(), genMsgDetails.getUid(), MessageState.QUEUED);
285+
}
286286

287287
publishProgress(true);
288288

289289
break;
290290
} else {
291-
MessageState newMessageState = MessageState.ERROR_SENDING_FAILED;
291+
MessageState newMsgState = MessageState.ERROR_SENDING_FAILED;
292292

293293
if (e instanceof MailConnectException) {
294-
newMessageState = MessageState.QUEUED;
294+
newMsgState = MessageState.QUEUED;
295295
}
296296

297297
if (e instanceof MessagingException) {
298298
if (e.getCause() != null) {
299299
if (e.getCause() instanceof SSLException
300300
|| e.getCause() instanceof SocketException) {
301-
newMessageState = MessageState.QUEUED;
301+
newMsgState = MessageState.QUEUED;
302302
}
303303
}
304304
}
305305

306306
if (e.getCause() != null) {
307307
if (e.getCause() instanceof FileNotFoundException) {
308-
newMessageState = MessageState.ERROR_CACHE_PROBLEM;
308+
newMsgState = MessageState.ERROR_CACHE_PROBLEM;
309309
}
310310
}
311311

312-
messageDaoSource.updateMessageState(context, generalMessageDetails.getEmail(),
313-
generalMessageDetails.getLabel(), generalMessageDetails.getUid(), newMessageState);
312+
msgDaoSource.updateMessageState(context, genMsgDetails.getEmail(),
313+
genMsgDetails.getLabel(), genMsgDetails.getUid(), newMsgState);
314314
}
315315

316316
Thread.sleep(5000);
@@ -350,6 +350,15 @@ private void saveCopyOfAlreadySentMessages(Context context, AccountDao accountDa
350350
}
351351
} catch (Exception e) {
352352
e.printStackTrace();
353+
ExceptionUtil.handleError(e);
354+
355+
if (!GeneralUtil.isInternetConnectionAvailable(context)) {
356+
messageDaoSource.updateMessageState(context,
357+
generalMessageDetails.getEmail(), generalMessageDetails.getLabel(),
358+
generalMessageDetails.getUid(), MessageState.SENT_WITHOUT_LOCAL_COPY);
359+
publishProgress(true);
360+
break;
361+
}
353362

354363
if (e.getCause() != null) {
355364
if (e.getCause() instanceof FileNotFoundException) {
@@ -364,11 +373,6 @@ private void saveCopyOfAlreadySentMessages(Context context, AccountDao accountDa
364373
messageDaoSource.deleteMessageFromFolder(context, accountDao.getEmail(),
365374
JavaEmailConstants.FOLDER_OUTBOX, generalMessageDetails.getUid());
366375
}
367-
368-
if (!GeneralUtil.isInternetConnectionAvailable(context)) {
369-
publishProgress(true);
370-
break;
371-
}
372376
}
373377
}
374378
}

0 commit comments

Comments
 (0)