Skip to content

Commit f53f1f4

Browse files
committed
Added a "Retry" button when the connection issue happened. | Close #67.
1 parent 4250857 commit f53f1f4

File tree

4 files changed

+56
-3
lines changed

4 files changed

+56
-3
lines changed

FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/EmailListFragment.java

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.flowcrypt.email.R;
2828
import com.flowcrypt.email.api.email.Folder;
2929
import com.flowcrypt.email.api.email.model.GeneralMessageDetails;
30+
import com.flowcrypt.email.api.email.sync.SyncErrorTypes;
3031
import com.flowcrypt.email.database.dao.source.imap.AttachmentDaoSource;
3132
import com.flowcrypt.email.database.dao.source.imap.MessageDaoSource;
3233
import com.flowcrypt.email.ui.activity.MessageDetailsActivity;
@@ -299,7 +300,7 @@ public void onScroll(AbsListView view, int firstVisibleItem,
299300
}
300301

301302
@Override
302-
public void onErrorOccurred(int requestCode, int errorType, Exception e) {
303+
public void onErrorOccurred(final int requestCode, int errorType, Exception e) {
303304
super.onErrorOccurred(requestCode, errorType, e);
304305
switch (requestCode) {
305306
case R.id.syns_request_code_load_next_messages:
@@ -315,6 +316,24 @@ public void onErrorOccurred(int requestCode, int errorType, Exception e) {
315316

316317
getLoaderManager().destroyLoader(R.id.loader_id_load_gmail_messages);
317318
cleanCache();
319+
320+
switch (errorType) {
321+
case SyncErrorTypes.CONNECTION_TO_STORE_IS_LOST:
322+
showSnackbar(getView(), getString(R.string.can_not_connect_to_the_imap_server), getString(R.string
323+
.retry), new View.OnClickListener() {
324+
@Override
325+
public void onClick(View v) {
326+
switch (requestCode) {
327+
case R.id.syns_request_code_load_next_messages:
328+
case R.id.syns_request_code_force_load_new_messages:
329+
UIUtil.exchangeViewVisibility(getContext(), true, progressView, statusView);
330+
loadNextMessages(-1);
331+
break;
332+
}
333+
}
334+
});
335+
break;
336+
}
318337
}
319338

320339
/**
@@ -353,6 +372,7 @@ public void onForceLoadNewMessagesCompleted(boolean needToRefreshList) {
353372
public void onNextMessagesLoaded(boolean isNeedToUpdateList) {
354373
lastPositionOfAlreadyLoaded = lastCalledPositionForLoadMore;
355374
footerProgressView.setVisibility(View.GONE);
375+
progressView.setVisibility(View.GONE);
356376
if (isNeedToUpdateList || messageListAdapter.getCount() == 0) {
357377
updateList(false);
358378
} else {

FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/MessageDetailsFragment.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.flowcrypt.email.api.email.model.AttachmentInfo;
3535
import com.flowcrypt.email.api.email.model.GeneralMessageDetails;
3636
import com.flowcrypt.email.api.email.model.IncomingMessageInfo;
37+
import com.flowcrypt.email.api.email.sync.SyncErrorTypes;
3738
import com.flowcrypt.email.database.dao.source.ContactsDaoSource;
3839
import com.flowcrypt.email.database.dao.source.imap.AttachmentDaoSource;
3940
import com.flowcrypt.email.js.PgpContact;
@@ -225,10 +226,25 @@ public void onClick(View v) {
225226
}
226227

227228
@Override
228-
public void onErrorOccurred(int requestCode, int errorType, Exception e) {
229+
public void onErrorOccurred(final int requestCode, int errorType, Exception e) {
229230
super.onErrorOccurred(requestCode, errorType, e);
230231
isAdditionalActionEnable = true;
231232
getActivity().invalidateOptionsMenu();
233+
234+
switch (errorType) {
235+
case SyncErrorTypes.CONNECTION_TO_STORE_IS_LOST:
236+
showSnackbar(getView(), getString(R.string.failed_load_message_from_email_server),
237+
getString(R.string.retry), new View.OnClickListener() {
238+
@Override
239+
public void onClick(View v) {
240+
UIUtil.exchangeViewVisibility(getContext(), true, progressView, statusView);
241+
((BaseSyncActivity) getBaseActivity()).loadMessageDetails(
242+
R.id.syns_request_code_load_message_details, folder,
243+
generalMessageDetails.getUid());
244+
}
245+
});
246+
break;
247+
}
232248
}
233249

234250
/**

FlowCrypt/src/main/java/com/flowcrypt/email/ui/activity/fragment/base/BaseGmailFragment.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import android.os.Bundle;
1010
import android.support.annotation.Nullable;
11+
import android.text.TextUtils;
1112
import android.view.View;
1213
import android.widget.TextView;
1314

@@ -58,7 +59,21 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
5859
*/
5960
public void onErrorOccurred(int requestCode, int errorType, Exception e) {
6061
getContentView().setVisibility(View.GONE);
61-
textViewStatusInfo.setText(R.string.there_was_syncing_problem);
62+
63+
switch (errorType) {
64+
case SyncErrorTypes.CONNECTION_TO_STORE_IS_LOST:
65+
textViewStatusInfo.setText(R.string.there_was_syncing_problem);
66+
break;
67+
68+
default:
69+
if (e != null && !TextUtils.isEmpty(e.getMessage())) {
70+
textViewStatusInfo.setText(e.getMessage());
71+
} else {
72+
textViewStatusInfo.setText(R.string.unknown_error);
73+
}
74+
break;
75+
}
76+
6277
UIUtil.exchangeViewVisibility(getContext(), false, progressView, statusView);
6378
if (getSnackBar() != null) {
6479
getSnackBar().dismiss();

FlowCrypt/src/main/res/values/strings.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,6 @@
154154
<string name="public_">Public</string>
155155
<string name="message_was_moved_to_inbox">The message was moved to inbox</string>
156156
<string name="attachment">Attachment</string>
157+
<string name="can_not_connect_to_the_imap_server">Can not connect to the IMAP server</string>
158+
<string name="failed_load_message_from_email_server">Failed to load a message from the email server</string>
157159
</resources>

0 commit comments

Comments
 (0)