Skip to content

Commit 020d2e5

Browse files
committed
Modified a logic on MessageDetailsFragment. Refactored code.| Close #129.
1 parent ef43d49 commit 020d2e5

File tree

6 files changed

+58
-33
lines changed

6 files changed

+58
-33
lines changed

FlowCrypt/src/main/java/com/flowcrypt/email/api/email/EmailUtil.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66

77
package com.flowcrypt.email.api.email;
88

9+
import android.text.TextUtils;
10+
911
import com.sun.mail.imap.IMAPFolder;
1012

1113
import java.util.Arrays;
@@ -25,7 +27,7 @@ public class EmailUtil {
2527
/**
2628
* Generate an unique content id.
2729
*
28-
* @return
30+
* @return A generated unique content id.
2931
*/
3032
public static String generateContentId() {
3133
return "<" + UUID.randomUUID().toString() + "@flowcrypt" + ">";
@@ -44,4 +46,19 @@ public static boolean isFolderHasNoSelectAttribute(IMAPFolder imapFolder) throws
4446
List<String> attributes = Arrays.asList(imapFolder.getAttributes());
4547
return attributes.contains(JavaEmailConstants.FOLDER_ATTRIBUTE_NO_SELECT);
4648
}
49+
50+
/**
51+
* Get a domain of some email.
52+
*
53+
* @return The domain of some email.
54+
*/
55+
public static String getDomain(String email) {
56+
if (TextUtils.isEmpty(email)) {
57+
return "";
58+
} else if (email.contains("@")) {
59+
return email.substring(email.indexOf('@') + 1, email.length());
60+
} else {
61+
return "";
62+
}
63+
}
4764
}

FlowCrypt/src/main/java/com/flowcrypt/email/api/email/FoldersManager.java

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -109,20 +109,30 @@ public static boolean isCustomLabels(IMAPFolder folder) throws MessagingExceptio
109109
/**
110110
* Get a {@link FolderType} using folder attributes.
111111
*
112-
* @param attributes The folder attributes.
112+
* @param folder Some {@link javax.mail.Folder}.
113113
* @return {@link FolderType}.
114114
*/
115-
public static FolderType getFolderTypeForImapFodler(String[] attributes) {
115+
public static FolderType getFolderTypeForImapFolder(Folder folder) {
116116
FolderType[] folderTypes = FolderType.values();
117117

118-
if (attributes != null) {
119-
for (String attribute : attributes) {
120-
for (FolderType folderType : folderTypes) {
121-
if (folderType.getValue().equals(attribute)) {
122-
return folderType;
118+
if (folder != null) {
119+
String[] attributes = folder.getAttributes();
120+
121+
if (attributes != null) {
122+
for (String attribute : attributes) {
123+
for (FolderType folderType : folderTypes) {
124+
if (folderType.getValue().equals(attribute)) {
125+
return folderType;
126+
}
123127
}
124128
}
125129
}
130+
131+
if (!TextUtils.isEmpty(folder.getServerFullFolderName())) {
132+
if (JavaEmailConstants.FOLDER_INBOX.equalsIgnoreCase(folder.getServerFullFolderName())) {
133+
return FolderType.INBOX;
134+
}
135+
}
126136
}
127137
return null;
128138
}
@@ -267,7 +277,7 @@ public Folder findInboxFolder() {
267277
}
268278

269279
private String prepareFolderKey(IMAPFolder imapFolder) throws MessagingException {
270-
FolderType folderType = getFolderTypeForImapFodler(imapFolder.getAttributes());
280+
FolderType folderType = getFolderTypeForImapFolder(generateFolder(imapFolder, null));
271281
if (folderType == null) {
272282
return imapFolder.getFullName();
273283
} else {
@@ -276,7 +286,7 @@ private String prepareFolderKey(IMAPFolder imapFolder) throws MessagingException
276286
}
277287

278288
private String prepareFolderKey(Folder folder) {
279-
FolderType folderType = getFolderTypeForImapFodler(folder.getAttributes());
289+
FolderType folderType = getFolderTypeForImapFolder(folder);
280290
if (folderType == null) {
281291
return folder.getServerFullFolderName();
282292
} else {

FlowCrypt/src/main/java/com/flowcrypt/email/api/email/JavaEmailConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,4 +48,6 @@ public class JavaEmailConstants {
4848
public static final String HEADER_X_ATTACHMENT_ID = "X-Attachment-Id";
4949
public static final String HEADER_CONTENT_ID = "Content-ID";
5050
public static final String FOLDER_INBOX = "INBOX";
51+
52+
public static final String EMAIL_PROVIDER_GMAIL = "gmail.com";
5153
}

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

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,10 @@
3434
import android.widget.Toast;
3535

3636
import com.flowcrypt.email.R;
37+
import com.flowcrypt.email.api.email.EmailUtil;
3738
import com.flowcrypt.email.api.email.Folder;
3839
import com.flowcrypt.email.api.email.FoldersManager;
40+
import com.flowcrypt.email.api.email.JavaEmailConstants;
3941
import com.flowcrypt.email.api.email.model.AttachmentInfo;
4042
import com.flowcrypt.email.api.email.model.GeneralMessageDetails;
4143
import com.flowcrypt.email.api.email.model.IncomingMessageInfo;
@@ -341,45 +343,39 @@ protected void updateMessageBody() {
341343
* @param folder The folder where current message exists.
342344
*/
343345
private void updateActionsVisibility(Folder folder) {
344-
FoldersManager foldersManager = FoldersManager.fromDatabase(getContext(), generalMessageDetails.getEmail());
345-
folderType = FoldersManager.getFolderTypeForImapFodler(folder.getAttributes());
346+
folderType = FoldersManager.getFolderTypeForImapFolder(folder);
346347

347348
if (folderType != null) {
348349
switch (folderType) {
349-
case All:
350-
isMoveToInboxActionEnable = true;
351-
isArchiveActionEnable = false;
350+
case INBOX:
351+
if (JavaEmailConstants.EMAIL_PROVIDER_GMAIL.equalsIgnoreCase(
352+
EmailUtil.getDomain(generalMessageDetails.getEmail()))) {
353+
isArchiveActionEnable = true;
354+
}
352355
isDeleteActionEnable = true;
353356
break;
354357

355358
case SENT:
356-
isArchiveActionEnable = false;
357359
isDeleteActionEnable = true;
358360
break;
359361

360362
case TRASH:
361-
isArchiveActionEnable = true;
362-
isDeleteActionEnable = false;
363-
break;
364-
365-
case DRAFTS:
366-
case SPAM:
367-
isArchiveActionEnable = false;
363+
isMoveToInboxActionEnable = true;
368364
isDeleteActionEnable = false;
369365
break;
370366

371367
default:
372-
isArchiveActionEnable = true;
368+
isMoveToInboxActionEnable = true;
369+
isArchiveActionEnable = false;
373370
isDeleteActionEnable = true;
374371
break;
375372
}
376373
} else {
377-
isArchiveActionEnable = true;
374+
isArchiveActionEnable = false;
378375
isMoveToInboxActionEnable = false;
379376
isDeleteActionEnable = true;
380377
}
381378

382-
isArchiveActionEnable = foldersManager.getFolderArchive() != null;
383379
getActivity().invalidateOptionsMenu();
384380
}
385381

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
164164
this.incomingMessageInfo = getActivity().getIntent().getParcelableExtra
165165
(CreateMessageActivity.EXTRA_KEY_INCOMING_MESSAGE_INFO);
166166
if (incomingMessageInfo != null && incomingMessageInfo.getFolder() != null) {
167-
this.folderType = FoldersManager.getFolderTypeForImapFodler(
168-
incomingMessageInfo.getFolder().getAttributes());
167+
this.folderType = FoldersManager.getFolderTypeForImapFolder(
168+
incomingMessageInfo.getFolder());
169169
}
170170
}
171171
}

FlowCrypt/src/main/java/com/flowcrypt/email/ui/adapter/MessageListAdapter.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,11 +55,11 @@ public void bindView(View view, Context context, Cursor cursor) {
5555
GeneralMessageDetails generalMessageDetails = messageDaoSource.getMessageInfo(cursor);
5656

5757
ViewHolder viewHolder = new ViewHolder();
58-
viewHolder.textViewSenderAddress = (TextView) view.findViewById(R.id
58+
viewHolder.textViewSenderAddress = view.findViewById(R.id
5959
.textViewSenderAddress);
60-
viewHolder.textViewDate = (TextView) view.findViewById(R.id.textViewDate);
61-
viewHolder.textViewSubject = (TextView) view.findViewById(R.id.textViewSubject);
62-
viewHolder.imageViewAttachments = (ImageView) view.findViewById(R.id.imageViewAttachments);
60+
viewHolder.textViewDate = view.findViewById(R.id.textViewDate);
61+
viewHolder.textViewSubject = view.findViewById(R.id.textViewSubject);
62+
viewHolder.imageViewAttachments = view.findViewById(R.id.imageViewAttachments);
6363

6464
updateItem(context, generalMessageDetails, viewHolder);
6565
}
@@ -71,7 +71,7 @@ public Folder getFolder() {
7171
public void setFolder(Folder folder) {
7272
this.folder = folder;
7373
if (folder != null) {
74-
this.folderType = FoldersManager.getFolderTypeForImapFodler(folder.getAttributes());
74+
this.folderType = FoldersManager.getFolderTypeForImapFolder(folder);
7575
} else {
7676
folderType = null;
7777
}

0 commit comments

Comments
 (0)