FIX: opening cancel draft dialog broke autosave

FIX: opening cancel draft dialog broke autosave

cancelComposer would leak a promise that never got resolved if you aborted cancelling a composer.

This change ensured the promise will always be resolved

diff --git a/app/assets/javascripts/discourse/app/controllers/composer.js b/app/assets/javascripts/discourse/app/controllers/composer.js
index f76b948..41fb94c 100644
--- a/app/assets/javascripts/discourse/app/controllers/composer.js
+++ b/app/assets/javascripts/discourse/app/controllers/composer.js
@@ -1043,8 +1043,8 @@ export default Controller.extend({
               if (differentDraft) {
                 this.model.clearState();
                 this.close();
-                resolve();
               }
+              resolve();
             }
           },
           {
@@ -1052,22 +1052,30 @@ export default Controller.extend({
             class: "btn-danger",
             callback: result => {
               if (result) {
-                this.destroyDraft().then(() => {
-                  this.model.clearState();
-                  this.close();
-                  resolve();
-                });
+                this.destroyDraft()
+                  .then(() => {
+                    this.model.clearState();
+                    this.close();
+                  })
+                  .finally(() => {
+                    resolve();
+                  });
+              } else {
+                resolve();
               }
             }
           }
         ]);
       } else {
         // it is possible there is some sort of crazy draft with no body ... just give up on it
-        this.destroyDraft().then(() => {
-          this.model.clearState();
-          this.close();
-          resolve();
-        });
+        this.destroyDraft()
+          .then(() => {
+            this.model.clearState();
+            this.close();
+          })
+          .finally(() => {
+            resolve();
+          });
       }
     });
 

GitHub sha: f41fcad6

1 Like