diff --git a/frappe/core/doctype/communication/communication_list.js b/frappe/core/doctype/communication/communication_list.js
index a7e9f0569c..fae003be4b 100644
--- a/frappe/core/doctype/communication/communication_list.js
+++ b/frappe/core/doctype/communication/communication_list.js
@@ -19,16 +19,7 @@ frappe.listview_settings['Communication'] = {
});
},
- set_primary_action: function(list_view) {
- var me = this;
- if (list_view.new_doctype) {
- list_view.page.set_primary_action(
- __("New"),
- function() { new frappe.views.CommunicationComposer({ doc: {} }) },
- "octicon octicon-plus"
- );
- } else {
- list_view.page.clear_primary_action();
- }
+ primary_action: function() {
+ new frappe.views.CommunicationComposer({ doc: {} })
}
};
diff --git a/frappe/public/js/frappe/list/list_view.js b/frappe/public/js/frappe/list/list_view.js
index a5b214ef0b..a2ed9dd09a 100644
--- a/frappe/public/js/frappe/list/list_view.js
+++ b/frappe/public/js/frappe/list/list_view.js
@@ -168,7 +168,11 @@ frappe.views.ListView = class ListView extends frappe.views.BaseList {
set_primary_action() {
if (this.can_create) {
this.page.set_primary_action(__('New'), () => {
- this.make_new_doc();
+ if (this.settings.primary_action) {
+ this.settings.primary_action();
+ } else {
+ this.make_new_doc();
+ }
}, 'octicon octicon-plus');
} else {
this.page.clear_primary_action();
diff --git a/frappe/public/js/frappe/views/communication.js b/frappe/public/js/frappe/views/communication.js
index fe503ad268..f38691eb55 100755
--- a/frappe/public/js/frappe/views/communication.js
+++ b/frappe/public/js/frappe/views/communication.js
@@ -509,7 +509,12 @@ frappe.views.CommunicationComposer = Class.extend({
delete_saved_draft() {
if (this.dialog) {
- localStorage.removeItem(this.frm.doctype + this.frm.docname);
+ try {
+ localStorage.removeItem(this.frm.doctype + this.frm.docname);
+ } catch (e) {
+ console.log(e);
+ console.warn('[Communication] Cannot delete localStorage item');
+ }
}
},
@@ -574,16 +579,6 @@ frappe.views.CommunicationComposer = Class.extend({
cur_frm.reload_doc();
}
- if (localStorage.getItem(this.frm.doctype + this.frm.docname)) {
- try {
- localStorage.removeItem(this.frm.doctype + this.frm.docname);
- } catch (e) {
- // silently fail
- console.log(e);
- console.warn('[Communication] Failed to delete draft.');
- }
- }
-
// try the success callback if it exists
if (me.success) {
try {
@@ -635,7 +630,10 @@ frappe.views.CommunicationComposer = Class.extend({
this.message = this.txt + (this.message ? ("
" + this.message) : "");
} else {
// saved draft in localStorage
- this.message = localStorage.getItem(this.frm.doctype + this.frm.docname) || '';
+ const { doctype, docname } = this.frm || {};
+ if (doctype && docname) {
+ this.message = localStorage.getItem(doctype + docname) || '';
+ }
}
if(this.real_name) {