From 9a8415c09558a71d51645292864ee1e5610a1a96 Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Mon, 21 Jan 2019 16:24:07 -0500 Subject: [PATCH] Fix refresh of drafts folder when saving a draft --- NEWS | 1 + SoObjects/Mailer/SOGoDraftObject.m | 9 ++++++++- UI/MailerUI/UIxMailAccountActions.m | 8 +++++--- UI/MailerUI/UIxMailEditor.m | 4 +++- UI/WebServerResources/js/Mailer/Mailbox.service.js | 8 +++++--- UI/WebServerResources/js/Mailer/Message.service.js | 3 ++- .../js/Mailer/MessageEditorController.js | 2 +- 7 files changed, 25 insertions(+), 10 deletions(-) diff --git a/NEWS b/NEWS index 42dc8deb6..c448d9879 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,7 @@ Enhancements Bug fixes - [web] fixed all-day event dates with different timezone - [web] fixed display of Bcc header (#4642) + - [web] fixed refresh of drafts folder when saving a draft - [core] ignore transparent events in time conflict validation (#4539) - [core] fixed yearly recurrence calculator when starting from previous year diff --git a/SoObjects/Mailer/SOGoDraftObject.m b/SoObjects/Mailer/SOGoDraftObject.m index c12aee115..4621c8450 100644 --- a/SoObjects/Mailer/SOGoDraftObject.m +++ b/SoObjects/Mailer/SOGoDraftObject.m @@ -874,6 +874,7 @@ static NSString *userAgent = nil; NSDictionary *h; NSMutableArray *addresses; NGImap4Envelope *sourceEnvelope; + SOGoUserDefaults *ud; id priority, receipt; [sourceMail fetchCoreInfos]; @@ -917,10 +918,12 @@ static NSString *userAgent = nil; if ([receipt isNotEmpty] && [receipt isKindOfClass: [NSString class]]) [info setObject: (NSString*)receipt forKey: @"Disposition-Notification-To"]; - [self setHeaders: info]; + ud = [[context activeUser] userDefaults]; + [self setHeaders: info]; [self setText: [sourceMail contentForEditing]]; [self setIMAP4ID: [[sourceMail nameInContainer] intValue]]; + [self setIsHTML: [[ud mailComposeMessageType] isEqualToString: @"html"]]; } // @@ -934,6 +937,7 @@ static NSString *userAgent = nil; NSMutableArray *addresses; NSMutableDictionary *info; NGImap4Envelope *sourceEnvelope; + SOGoUserDefaults *ud; fromSentMailbox = [[sourceMail container] isKindOfClass: [SOGoSentFolder class]]; [sourceMail fetchCoreInfos]; @@ -955,8 +959,11 @@ static NSString *userAgent = nil; if ([addresses count]) [info setObject: [addresses objectAtIndex: 0] forKey: @"from"]; + ud = [[context activeUser] userDefaults]; + [self setText: [sourceMail contentForReply]]; [self setHeaders: info]; + [self setIsHTML: [[ud mailComposeMessageType] isEqualToString: @"html"]]; [self setSourceURL: [sourceMail imap4URLString]]; [self setSourceFlag: @"Answered"]; [self setSourceIMAP4ID: [[sourceMail nameInContainer] intValue]]; diff --git a/UI/MailerUI/UIxMailAccountActions.m b/UI/MailerUI/UIxMailAccountActions.m index fed021f4d..49514cbd9 100644 --- a/UI/MailerUI/UIxMailAccountActions.m +++ b/UI/MailerUI/UIxMailAccountActions.m @@ -106,6 +106,7 @@ NSDictionary *data; NSString *accountName, *mailboxName, *messageName; SOGoDraftsFolder *drafts; + SOGoUserDefaults *ud; id mailTo; BOOL save; @@ -139,10 +140,11 @@ signature = [[self clientObject] signature]; if ([signature length]) { - nl = ([[[[context activeUser] userDefaults] mailComposeMessageType] isEqualToString: @"html"] ? @"
" : @"\n"); + ud = [[context activeUser] userDefaults]; + [newDraftMessage setIsHTML: [[ud mailComposeMessageType] isEqualToString: @"html"]]; + nl = ([newDraftMessage isHTML] ? @"
" : @"\n"); - [newDraftMessage - setText: [NSString stringWithFormat: @"%@%@-- %@%@", nl, nl, nl, signature]]; + [newDraftMessage setText: [NSString stringWithFormat: @"%@%@-- %@%@", nl, nl, nl, signature]]; save = YES; } if (save) diff --git a/UI/MailerUI/UIxMailEditor.m b/UI/MailerUI/UIxMailEditor.m index d93345a1e..cbd1a0918 100644 --- a/UI/MailerUI/UIxMailEditor.m +++ b/UI/MailerUI/UIxMailEditor.m @@ -756,6 +756,7 @@ static NSArray *infoKeys = nil; co = [self clientObject]; [co fetchInfo]; [self loadInfo: [co headers]]; + [self setIsHTML: [co isHTML]]; [self setText: [co text]]; [self setSourceUID: [co IMAP4ID]]; [self setSourceFolder: [co sourceFolder]]; @@ -793,7 +794,7 @@ static NSArray *infoKeys = nil; SOGoDraftObject *co; co = [self clientObject]; - [self setIsHTML: [self isHTML]]; + [co setIsHTML: isHTML]; result = [self _saveRequestInfo]; if (!result) @@ -805,6 +806,7 @@ static NSArray *infoKeys = nil; { // Save new UID to plist [self setSourceUID: [co IMAP4ID]]; + [co setIsHTML: isHTML]; [co storeInfo]; // Prepare response diff --git a/UI/WebServerResources/js/Mailer/Mailbox.service.js b/UI/WebServerResources/js/Mailer/Mailbox.service.js index 517c237a3..1fd90b667 100644 --- a/UI/WebServerResources/js/Mailer/Mailbox.service.js +++ b/UI/WebServerResources/js/Mailer/Mailbox.service.js @@ -434,9 +434,11 @@ } } - Mailbox.$log.debug('Loading UIDs ' + uids.join(' ')); - futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids}); - this.$unwrapHeaders(futureHeadersData); + if (uids.length) { + Mailbox.$log.debug('Loading UIDs ' + uids.join(' ')); + futureHeadersData = Mailbox.$$resource.post(this.id, 'headers', {uids: uids}); + this.$unwrapHeaders(futureHeadersData); + } } } return loaded; diff --git a/UI/WebServerResources/js/Mailer/Message.service.js b/UI/WebServerResources/js/Mailer/Message.service.js index 099ec6434..4e676b76f 100644 --- a/UI/WebServerResources/js/Mailer/Message.service.js +++ b/UI/WebServerResources/js/Mailer/Message.service.js @@ -171,10 +171,11 @@ index = this.$mailbox.uidsMap[oldUID]; this.$mailbox.uidsMap[uid] = index; delete this.$mailbox.uidsMap[oldUID]; + this.$mailbox.$messages[index].uid = this.uid; // Update messages list of mailbox _.forEach(['from', 'to', 'subject'], function(attr) { - _this.$mailbox.$messages[index][attr] = _this[attr]; + _this.$mailbox.$messages[index][attr] = _this.editable[attr]; }); } } diff --git a/UI/WebServerResources/js/Mailer/MessageEditorController.js b/UI/WebServerResources/js/Mailer/MessageEditorController.js index af624d843..0dcf1ed41 100644 --- a/UI/WebServerResources/js/Mailer/MessageEditorController.js +++ b/UI/WebServerResources/js/Mailer/MessageEditorController.js @@ -128,7 +128,7 @@ // }, onSuccessItem: function(item, response, status, headers) { vm.message.$setUID(response.uid); - vm.message.$reload({asDraft: false}); + vm.message.$reload(); item.inlineUrl = response.lastAttachmentAttrs[0].url; //console.debug(item); console.debug('success = ' + JSON.stringify(response, undefined, 2)); },