Skip to content

Commit 528c9f7

Browse files
committed
Fixed a reply for sent messages. | Close #73.
1 parent 517cd71 commit 528c9f7

File tree

4 files changed

+72
-30
lines changed

4 files changed

+72
-30
lines changed

FlowCrypt/src/main/java/com/flowcrypt/email/api/email/model/IncomingMessageInfo.java

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
import android.os.Parcel;
1010

11+
import com.flowcrypt.email.api.email.Folder;
1112
import com.flowcrypt.email.model.messages.MessagePart;
1213

1314
import java.util.ArrayList;
@@ -38,20 +39,36 @@ public IncomingMessageInfo[] newArray(int size) {
3839
};
3940

4041
private ArrayList<String> from;
42+
private ArrayList<String> to;
4143
private Date receiveDate;
4244
private String originalRawMessageWithoutAttachments;
4345
private List<MessagePart> messageParts;
46+
private Folder folder;
4447

4548
public IncomingMessageInfo() {
4649
}
4750

48-
protected IncomingMessageInfo(Parcel in) {
51+
public IncomingMessageInfo(Parcel in) {
4952
super(in);
5053
this.from = in.createStringArrayList();
54+
this.to = in.createStringArrayList();
5155
long tmpReceiveDate = in.readLong();
5256
this.receiveDate = tmpReceiveDate == -1 ? null : new Date(tmpReceiveDate);
5357
this.originalRawMessageWithoutAttachments = in.readString();
5458
this.messageParts = in.createTypedArrayList(MessagePart.CREATOR);
59+
this.folder = in.readParcelable(Folder.class.getClassLoader());
60+
}
61+
62+
@Override
63+
public String toString() {
64+
return "IncomingMessageInfo{" +
65+
"from=" + from +
66+
"to=" + to +
67+
", receiveDate=" + receiveDate +
68+
", originalRawMessageWithoutAttachments='" + originalRawMessageWithoutAttachments + '\'' +
69+
", messageParts=" + messageParts +
70+
", folder=" + folder +
71+
"} " + super.toString();
5572
}
5673

5774
@Override
@@ -63,20 +80,11 @@ public int describeContents() {
6380
public void writeToParcel(Parcel dest, int flags) {
6481
super.writeToParcel(dest, flags);
6582
dest.writeStringList(this.from);
83+
dest.writeStringList(this.to);
6684
dest.writeLong(this.receiveDate != null ? this.receiveDate.getTime() : -1);
6785
dest.writeString(this.originalRawMessageWithoutAttachments);
6886
dest.writeTypedList(this.messageParts);
69-
}
70-
71-
@Override
72-
public String toString() {
73-
return "IncomingMessageInfo{" +
74-
"from=" + from +
75-
", receiveDate=" + receiveDate +
76-
", originalRawMessageWithoutAttachments='" + originalRawMessageWithoutAttachments
77-
+ '\'' +
78-
", messageParts=" + messageParts +
79-
"} " + super.toString();
87+
dest.writeParcelable(this.folder, flags);
8088
}
8189

8290
/**
@@ -116,4 +124,20 @@ public List<MessagePart> getMessageParts() {
116124
public void setMessageParts(List<MessagePart> messageParts) {
117125
this.messageParts = messageParts;
118126
}
127+
128+
public Folder getFolder() {
129+
return folder;
130+
}
131+
132+
public void setFolder(Folder folder) {
133+
this.folder = folder;
134+
}
135+
136+
public ArrayList<String> getTo() {
137+
return to;
138+
}
139+
140+
public void setTo(ArrayList<String> to) {
141+
this.to = to;
142+
}
119143
}

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

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public class MessageDetailsFragment extends BaseGmailFragment implements View.On
7878
private IncomingMessageInfo incomingMessageInfo;
7979
private GeneralMessageDetails generalMessageDetails;
8080
private Folder folder;
81+
private FoldersManager.FolderType folderType;
8182

8283
private boolean isAdditionalActionEnable;
8384
private boolean isDeleteActionEnable;
@@ -199,7 +200,8 @@ public void handleSuccessLoaderResult(int loaderId, Object result) {
199200
imageButtonReplyAll.setVisibility(View.VISIBLE);
200201
isAdditionalActionEnable = true;
201202
getActivity().invalidateOptionsMenu();
202-
this.incomingMessageInfo = (IncomingMessageInfo) result;
203+
incomingMessageInfo = (IncomingMessageInfo) result;
204+
incomingMessageInfo.setFolder(folder);
203205
updateMessageBody();
204206
UIUtil.exchangeViewVisibility(getContext(), false, progressView, layoutMessageParts);
205207
break;
@@ -289,8 +291,7 @@ protected void updateMessageBody() {
289291
* @param folder The folder where current message exists.
290292
*/
291293
private void updateActionsVisibility(Folder folder) {
292-
FoldersManager.FolderType folderType = FoldersManager.getFolderTypeForImapFodler(folder
293-
.getAttributes());
294+
folderType = FoldersManager.getFolderTypeForImapFodler(folder.getAttributes());
294295

295296
if (folderType != null) {
296297
switch (folderType) {
@@ -403,7 +404,11 @@ private void updateViews() {
403404
String subject = TextUtils.isEmpty(generalMessageDetails.getSubject()) ? getString(R.string.no_subject) :
404405
generalMessageDetails.getSubject();
405406

406-
textViewSenderAddress.setText(generalMessageDetails.getFrom()[0]);
407+
if (folderType == FoldersManager.FolderType.SENT) {
408+
textViewSenderAddress.setText(generalMessageDetails.getTo()[0]);
409+
} else {
410+
textViewSenderAddress.setText(generalMessageDetails.getFrom()[0]);
411+
}
407412
textViewSubject.setText(subject);
408413
textViewDate.setText(dateFormat.format(generalMessageDetails.getReceivedDateInMillisecond()));
409414
}

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

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import android.widget.TextView;
2121

2222
import com.flowcrypt.email.R;
23+
import com.flowcrypt.email.api.email.FoldersManager;
2324
import com.flowcrypt.email.api.email.model.IncomingMessageInfo;
2425
import com.flowcrypt.email.api.email.model.OutgoingMessageInfo;
2526
import com.flowcrypt.email.database.dao.source.ContactsDaoSource;
@@ -55,6 +56,7 @@ public class SecureReplyFragment extends BaseSendSecurityMessageFragment {
5556
private View layoutContent;
5657
private View progressBarCheckContactsDetails;
5758
private TextInputLayout textInputLayoutReplyEmailMessage;
59+
private FoldersManager.FolderType folderType;
5860

5961
public SecureReplyFragment() {
6062
}
@@ -80,6 +82,10 @@ public void onCreate(@Nullable Bundle savedInstanceState) {
8082
if (getActivity().getIntent() != null) {
8183
this.incomingMessageInfo = getActivity().getIntent().getParcelableExtra
8284
(SecureReplyActivity.EXTRA_KEY_INCOMING_MESSAGE_INFO);
85+
if (incomingMessageInfo != null && incomingMessageInfo.getFolder() != null) {
86+
this.folderType = FoldersManager.getFolderTypeForImapFodler(incomingMessageInfo.getFolder()
87+
.getAttributes());
88+
}
8389
}
8490
}
8591

@@ -122,7 +128,8 @@ public OutgoingMessageInfo getOutgoingMessageInfo() {
122128
outgoingMessageInfo.setRawReplyMessage(
123129
incomingMessageInfo.getOriginalRawMessageWithoutAttachments());
124130
List<PgpContact> pgpContacts = new ContactsDaoSource().getPgpContactsListFromDatabase
125-
(getContext(), incomingMessageInfo.getFrom());
131+
(getContext(), FoldersManager.FolderType.SENT == folderType ? incomingMessageInfo.getTo() :
132+
incomingMessageInfo.getFrom());
126133

127134
outgoingMessageInfo.setToPgpContacts(pgpContacts.toArray(new PgpContact[0]));
128135

@@ -143,7 +150,11 @@ public View getUpdateInfoAboutContactsProgressBar() {
143150

144151
@Override
145152
public List<String> getContactsEmails() {
146-
return incomingMessageInfo.getFrom();
153+
if (FoldersManager.FolderType.SENT == folderType) {
154+
return incomingMessageInfo.getTo();
155+
} else {
156+
return incomingMessageInfo.getFrom();
157+
}
147158
}
148159

149160
@Override
@@ -185,21 +196,17 @@ public void onClick(View v) {
185196
return false;
186197
}
187198

188-
/**
189-
* Update an incoming message info and views on the current screen.
190-
*/
191-
public void setIncomingMessageInfo(IncomingMessageInfo incomingMessageInfo) {
192-
this.incomingMessageInfo = incomingMessageInfo;
193-
updateViews();
194-
}
195-
196199
/**
197200
* Update views on the screen. This method can be called when we need to update the current
198201
* screen.
199202
*/
200203
private void updateViews() {
201204
if (incomingMessageInfo != null) {
202-
textViewReplyRecipient.setText(incomingMessageInfo.getFrom().get(0));
205+
if (FoldersManager.FolderType.SENT == folderType) {
206+
textViewReplyRecipient.setText(incomingMessageInfo.getTo().get(0));
207+
} else {
208+
textViewReplyRecipient.setText(incomingMessageInfo.getFrom().get(0));
209+
}
203210
}
204211
}
205212

FlowCrypt/src/main/java/com/flowcrypt/email/ui/loader/DecryptMessageAsyncTaskLoader.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,19 @@ private IncomingMessageInfo parseRawMessage(String rawMessage) throws Exception
8585
if (rawMessage != null) {
8686
Js js = new Js(getContext(), new SecurityStorageConnector(getContext()));
8787
ProcessedMime processedMime = js.mime_process(rawMessage);
88-
ArrayList<String> addresses = new ArrayList<>();
88+
ArrayList<String> addressesFrom = new ArrayList<>();
89+
ArrayList<String> addressesTo = new ArrayList<>();
8990

9091
for (MimeAddress mimeAddress : processedMime.getAddressHeader("from")) {
91-
addresses.add(mimeAddress.getAddress());
92+
addressesFrom.add(mimeAddress.getAddress());
9293
}
9394

94-
incomingMessageInfo.setFrom(addresses);
95+
for (MimeAddress mimeAddress : processedMime.getAddressHeader("to")) {
96+
addressesTo.add(mimeAddress.getAddress());
97+
}
98+
99+
incomingMessageInfo.setFrom(addressesFrom);
100+
incomingMessageInfo.setTo(addressesTo);
95101
incomingMessageInfo.setSubject(processedMime.getStringHeader("subject"));
96102
incomingMessageInfo.setReceiveDate(new Date(processedMime.getTimeHeader("date")));
97103
incomingMessageInfo.setOriginalRawMessageWithoutAttachments(rawMessage);

0 commit comments

Comments
 (0)