Skip to content

Commit 14b198f

Browse files
Fix delete draft. Fix #1089
1 parent 34f7262 commit 14b198f

File tree

5 files changed

+46
-24
lines changed

5 files changed

+46
-24
lines changed

electron_app/src/DBManager.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -502,12 +502,16 @@ const getEmailsByIds = ids => {
502502
GROUP_CONCAT(DISTINCT(CASE WHEN ${Table.EMAIL_CONTACT}.type = 'bcc' THEN ${
503503
Table.EMAIL_CONTACT
504504
}.contactId ELSE NULL END)) as 'bcc',
505-
GROUP_CONCAT(DISTINCT(${Table.FILE}.token)) as fileTokens
505+
GROUP_CONCAT(DISTINCT(${Table.FILE}.token)) as fileTokens,
506+
GROUP_CONCAT(DISTINCT(${Table.EMAIL_LABEL}.labelId)) as labelIds
506507
FROM ${Table.EMAIL}
507508
LEFT JOIN ${Table.EMAIL_CONTACT} ON ${Table.EMAIL_CONTACT}.emailId = ${
508509
Table.EMAIL
509510
}.id
510511
LEFT JOIN ${Table.FILE} ON ${Table.FILE}.emailId = ${Table.EMAIL}.id
512+
LEFT JOIN ${Table.EMAIL_LABEL} ON ${Table.EMAIL_LABEL}.emailId = ${
513+
Table.EMAIL
514+
}.id
511515
WHERE ${Table.EMAIL}.id IN (${idsString})
512516
GROUP BY ${Table.EMAIL}.id
513517
`;
@@ -540,12 +544,16 @@ const getEmailsByThreadId = threadId => {
540544
GROUP_CONCAT(DISTINCT(CASE WHEN ${Table.EMAIL_CONTACT}.type = 'bcc' THEN ${
541545
Table.EMAIL_CONTACT
542546
}.contactId ELSE NULL END)) as 'bcc',
543-
GROUP_CONCAT(DISTINCT(${Table.FILE}.token)) as fileTokens
547+
GROUP_CONCAT(DISTINCT(${Table.FILE}.token)) as fileTokens,
548+
GROUP_CONCAT(DISTINCT(${Table.EMAIL_LABEL}.labelId)) as labelIds
544549
FROM ${Table.EMAIL}
545550
LEFT JOIN ${Table.EMAIL_CONTACT} ON ${Table.EMAIL_CONTACT}.emailId = ${
546551
Table.EMAIL
547552
}.id
548553
LEFT JOIN ${Table.FILE} ON ${Table.FILE}.emailId = ${Table.EMAIL}.id
554+
LEFT JOIN ${Table.EMAIL_LABEL} ON ${Table.EMAIL_LABEL}.emailId = ${
555+
Table.EMAIL
556+
}.id
549557
WHERE threadId = '${threadId}'
550558
GROUP BY ${Table.EMAIL}.id
551559
`;

electron_app/src/windows/composer.js

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -155,34 +155,35 @@ const destroy = async ({
155155
}) => {
156156
const composer = BrowserWindow.fromId(composerId);
157157
const emailToEdit = globalManager.emailToEdit.get(composer.id);
158-
let typeEmailSent = 'new-email';
159-
let threadData = undefined;
158+
let event = 'composer-email-sent';
159+
let params = {
160+
type: 'new-email',
161+
threadId,
162+
hasExternalPassphrase
163+
};
160164
if (emailToEdit) {
161165
const { type, key } = emailToEdit;
162166
if (type === composerEvents.EDIT_DRAFT) {
163-
typeEmailSent = 'draft-edited';
164167
const [oldDraftEmail] = await dbManager.getEmailByKey(key);
168+
const oldEmailId = oldDraftEmail.id;
165169
await dbManager.deleteEmailLabelAndContactByEmailId(
166-
oldDraftEmail.id,
170+
oldEmailId,
167171
undefined
168172
);
173+
event = 'composer-email-delete';
174+
params = { threadId, oldEmailId };
169175
} else if (
170176
type === composerEvents.REPLY ||
171177
type === composerEvents.REPLY_ALL
172178
) {
173-
typeEmailSent = 'reply';
174-
threadData = {
179+
params.type = 'reply';
180+
params.threadData = {
175181
threadId,
176182
newEmailId: emailId
177183
};
178184
}
179185
}
180-
sendEventToMailbox('composer-email-sent', {
181-
type: typeEmailSent,
182-
threadId,
183-
hasExternalPassphrase,
184-
threadData
185-
});
186+
sendEventToMailbox(event, params);
186187
globalManager.composerData.delete(composer.id);
187188
composer.destroy();
188189
};

email_composer/src/containers/Composer.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,8 @@ class ComposerWrapper extends Component {
270270
};
271271

272272
handleClickDiscardDraft = () => {
273-
closeComposerWindow({});
273+
const threadId = this.state.threadId;
274+
closeComposerWindow({ threadId });
274275
};
275276

276277
handleDisableSendButtonOnInvalidEmail = () => {

email_mailbox/src/components/PanelWrapper.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ class PanelWrapper extends Component {
415415
const currentLabelId = isRenderingMailbox
416416
? this.state.sectionSelected.params.mailboxSelected.id
417417
: null;
418-
const { threadId, newEmailId, oldEmailId } = eventParams;
418+
const { threadId, newEmailId, oldEmailId, badgeLabelIds } = eventParams;
419419
if (!threadId && !newEmailId && !oldEmailId) return;
420420
if (currentLabelId) {
421421
this.props.onLoadEmails(threadId);
@@ -429,6 +429,10 @@ class PanelWrapper extends Component {
429429
if (!newEmailId && !oldEmailId) {
430430
this.props.onUpdateUnreadEmailsBadge([LabelType.inbox.id]);
431431
}
432+
433+
if (badgeLabelIds) {
434+
this.props.onUpdateUnreadEmailsBadge(badgeLabelIds);
435+
}
432436
};
433437

434438
deviceRemovedListenerCallback = () => {

email_mailbox/src/utils/electronEventInterface.js

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,6 +1024,7 @@ ipcRenderer.on(
10241024
type: MessageType.SUCCESS,
10251025
params: { threadId }
10261026
};
1027+
10271028
emitter.emit(Event.DISPLAY_MESSAGE, messageData);
10281029
switch (type) {
10291030
case 'new-email': {
@@ -1033,14 +1034,6 @@ ipcRenderer.on(
10331034
});
10341035
break;
10351036
}
1036-
case 'draft-edited': {
1037-
emitter.emit(Event.STORE_LOAD, {
1038-
labelIds: [LabelType.sent.id, LabelType.draft.id],
1039-
badgeLabelIds: [LabelType.draft.id],
1040-
threadIds: [threadId]
1041-
});
1042-
break;
1043-
}
10441037
case 'reply': {
10451038
const { threadId, newEmailId, oldEmailId } = threadData;
10461039
emitter.emit(Event.UPDATE_THREAD_EMAILS, {
@@ -1056,6 +1049,21 @@ ipcRenderer.on(
10561049
}
10571050
);
10581051

1052+
ipcRenderer.on('composer-email-delete', (ev, { threadId, oldEmailId }) => {
1053+
if (threadId && oldEmailId) {
1054+
return emitter.emit(Event.UPDATE_THREAD_EMAILS, {
1055+
threadId,
1056+
oldEmailId,
1057+
badgeLabelIds: [LabelType.draft.id]
1058+
});
1059+
}
1060+
emitter.emit(Event.STORE_LOAD, {
1061+
labelIds: [LabelType.sent.id, LabelType.draft.id],
1062+
badgeLabelIds: [LabelType.draft.id],
1063+
threadIds: [threadId]
1064+
});
1065+
});
1066+
10591067
ipcRenderer.on('display-message-success-download', () => {
10601068
const messageData = {
10611069
...Messages.success.downloadFile,

0 commit comments

Comments
 (0)