FIX: wrap modal onShow inside next (#10651)

FIX: wrap modal onShow inside next (#10651)

Before this commit, onShow code could be impacted by code happening after the onShow call. This should ensure this code works for example:

onShow() {
  afterRender(() => {
    someInput.focus();
  })
}
diff --git a/app/assets/javascripts/discourse/app/lib/show-modal.js b/app/assets/javascripts/discourse/app/lib/show-modal.js
index f2602e0..a550b2f 100644
--- a/app/assets/javascripts/discourse/app/lib/show-modal.js
+++ b/app/assets/javascripts/discourse/app/lib/show-modal.js
@@ -1,3 +1,4 @@
+import { next } from "@ember/runloop";
 import I18n from "I18n";
 import { dasherize } from "@ember/string";
 import { getOwner } from "discourse-common/lib/get-owner";
@@ -72,7 +73,7 @@ export default function (name, opts) {
     controller.set("model", model);
   }
   if (controller.onShow) {
-    controller.onShow();
+    next(() => controller.onShow());
   }
   controller.set("flashMessage", null);
 

GitHub sha: d9aa105c

This commit appears in #10651 which was merged by jjaffeux.