99import android .content .Intent ;
1010import android .database .Cursor ;
1111import android .os .Bundle ;
12+ import android .support .annotation .NonNull ;
1213import android .support .v4 .app .LoaderManager ;
1314import android .support .v4 .content .CursorLoader ;
1415import 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