Browse Source

amber.initialize returns a Promise

Promise used in showing "open ide" links only after amber is initialized
Add amber-compat-es2015 as development dependency
Herbert Vojčík 8 years ago
parent
commit
08f3b147fe
3 changed files with 30 additions and 8 deletions
  1. 4 1
      bower.json
  2. 14 3
      internal/index.html
  3. 12 4
      support/helpers.js

+ 4 - 1
bower.json

@@ -13,5 +13,8 @@
     "/test_runner.js",
     "test",
     "tests"
-  ]
+  ],
+  "devDependencies": {
+    "amber-compat-es2015": "^0.1.0"
+  }
 }

+ 14 - 3
internal/index.html

@@ -16,15 +16,26 @@
 </head>
 
 <body>
+<p id="loading">Loading Amber for development ...</p>
+<p id="startlegacy">To start legacy in-page IDE, <a href="#" onclick="require('amber/helpers').globals.Browser._open(); return false;">click here</a>.</p>
+<p id="starthelios">To popup Helios IDE, <a href="#" onclick="require('amber/helpers').popupHelios(); return false;">click here</a>.</p>
 <script type='text/javascript'>
+    var startLegacy = document.getElementById("startlegacy");
+    startLegacy.parentNode.removeChild(startLegacy);
+    var startHelios = document.getElementById("starthelios");
+    startHelios.parentNode.removeChild(startHelios);
     require(
         ["amber/devel", "amber/legacy/IDE", "amber/web/Web", "amber/legacy/Benchfib", "helios/all", "amber_cli/AmberCli"],
         function (amber) {
-            amber.initialize({'transport.defaultAmdNamespace': "amber_core"});
+            amber.initialize({'transport.defaultAmdNamespace': "amber_core"})
+                    .then(function () {
+                        var loading = document.getElementById("loading");
+                        loading.parentNode.appendChild(startLegacy);
+                        loading.parentNode.appendChild(startHelios);
+                        loading.parentNode.removeChild(loading);
+                    });
         }
     );
 </script>
-<p>To start legacy in-page IDE, <a href="#" onclick="require('amber/helpers').globals.Browser._open(); return false;">click here</a>.</p>
-<p>To popup Helios IDE, <a href="#" onclick="require('amber/helpers').popupHelios(); return false;">click here</a>.</p>
 </body>
 </html> 

+ 12 - 4
support/helpers.js

@@ -57,10 +57,18 @@ define(["amber/boot", "require"], function (boot, require) {
     }
 
     exports.initialize = function (options) {
-        globals.SmalltalkSettings['transport.defaultAmdNamespace'] = api.defaultAmdNamespace;
-        settingsInLocalStorage();
-        mixinToSettings(options || {});
-        return api.initialize();
+        return Promise.resolve()
+            .then(function () {
+                globals.SmalltalkSettings['transport.defaultAmdNamespace'] = api.defaultAmdNamespace;
+            })
+            .then(settingsInLocalStorage)
+            .then(function () {
+                return options || {};
+            })
+            .then(mixinToSettings)
+            .then(function () {
+                return api.initialize();
+            })
     };
 
     // Exports