Skip to content

Commit 478ccd7

Browse files
committed
Fixed an infinite loading in MessageDetailsActivity.| Close #355
1 parent 24da3ab commit 478ccd7

File tree

1 file changed

+26
-25
lines changed

1 file changed

+26
-25
lines changed

FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/MessageDetailsActivity.java

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import android.content.Intent;
1010
import android.database.Cursor;
1111
import android.os.Bundle;
12+
import android.support.annotation.NonNull;
1213
import android.support.v4.app.LoaderManager;
1314
import android.support.v4.content.CursorLoader;
1415
import android.support.v4.content.Loader;
@@ -53,6 +54,7 @@ public class MessageDetailsActivity extends BaseBackStackSyncActivity implements
5354
private boolean isNeedToReceiveMessageBody;
5455
private boolean isBackEnable = true;
5556
private boolean isRequestMessageDetailsStarted;
57+
private boolean isNeedToRetrieveIncomingMsg = true;
5658

5759
public static Intent getIntent(Context context, Folder folder, GeneralMessageDetails generalMessageDetails) {
5860
Intent intent = new Intent(context, MessageDetailsActivity.class);
@@ -98,6 +100,7 @@ public void onBackPressed() {
98100
}
99101
}
100102

103+
@NonNull
101104
@Override
102105
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
103106
switch (id) {
@@ -112,44 +115,42 @@ public Loader<Cursor> onCreateLoader(int id, Bundle args) {
112115
String.valueOf(generalMessageDetails.getUid())}, null);
113116

114117
default:
115-
return null;
118+
return new Loader<>(this);
116119
}
117120
}
118121

119122
@Override
120-
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
123+
public void onLoadFinished(@NonNull Loader<Cursor> loader, Cursor cursor) {
124+
MessageDaoSource messageDaoSource = new MessageDaoSource();
125+
121126
switch (loader.getId()) {
122127
case R.id.loader_id_load_message_info_from_database:
123-
if (TextUtils.isEmpty(generalMessageDetails.getRawMessageWithoutAttachments())) {
124-
if (cursor != null && cursor.moveToFirst()) {
125-
if (TextUtils.isEmpty(cursor.getString(cursor.getColumnIndex
126-
(MessageDaoSource.COL_RAW_MESSAGE_WITHOUT_ATTACHMENTS)))) {
127-
if (isBoundToSyncService && !isRequestMessageDetailsStarted) {
128-
this.isRequestMessageDetailsStarted = true;
129-
loadMessageDetails(R.id.syns_request_code_load_message_details,
130-
folder, generalMessageDetails.getUid());
131-
} else {
132-
isNeedToReceiveMessageBody = true;
133-
}
128+
if (cursor != null && cursor.moveToFirst()) {
129+
this.generalMessageDetails = messageDaoSource.getMessageInfo(cursor);
130+
updateMessageDetails(generalMessageDetails);
131+
132+
if (TextUtils.isEmpty(generalMessageDetails.getRawMessageWithoutAttachments())) {
133+
if (isBoundToSyncService && !isRequestMessageDetailsStarted) {
134+
this.isRequestMessageDetailsStarted = true;
135+
loadMessageDetails(R.id.syns_request_code_load_message_details,
136+
folder, generalMessageDetails.getUid());
134137
} else {
135-
isNeedToReceiveMessageBody = false;
136-
MessageDaoSource messageDaoSource = new MessageDaoSource();
137-
messageDaoSource.setSeenStatusForLocalMessage(this, generalMessageDetails.getEmail(),
138-
folder.getFolderAlias(), generalMessageDetails.getUid());
139-
this.generalMessageDetails = messageDaoSource.getMessageInfo(cursor);
140-
updateMessageDetails(generalMessageDetails);
141-
setResult(MessageDetailsActivity.RESULT_CODE_UPDATE_LIST, null);
142-
143-
decryptMessage(R.id.js_decrypt_message, generalMessageDetails
144-
.getRawMessageWithoutAttachments());
138+
isNeedToReceiveMessageBody = true;
145139
}
140+
} else if (isNeedToRetrieveIncomingMsg) {
141+
isNeedToRetrieveIncomingMsg = false;
142+
isNeedToReceiveMessageBody = false;
143+
messageDaoSource.setSeenStatusForLocalMessage(this, generalMessageDetails.getEmail(),
144+
folder.getFolderAlias(), generalMessageDetails.getUid());
145+
setResult(MessageDetailsActivity.RESULT_CODE_UPDATE_LIST, null);
146+
decryptMessage(R.id.js_decrypt_message, generalMessageDetails
147+
.getRawMessageWithoutAttachments());
146148
}
147149
}
148150
break;
149151

150152
case R.id.loader_id_subscribe_to_message_changes:
151153
if (cursor != null && cursor.moveToFirst()) {
152-
MessageDaoSource messageDaoSource = new MessageDaoSource();
153154
generalMessageDetails = messageDaoSource.getMessageInfo(cursor);
154155
updateViews();
155156
}
@@ -158,7 +159,7 @@ public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
158159
}
159160

160161
@Override
161-
public void onLoaderReset(Loader<Cursor> loader) {
162+
public void onLoaderReset(@NonNull Loader<Cursor> loader) {
162163
switch (loader.getId()) {
163164
case R.id.loader_id_load_message_info_from_database:
164165
break;

0 commit comments

Comments
 (0)