@@ -88,6 +88,12 @@ result += "\n";
8888 result += "\n })(0, memo);" ;
8989 result += "\n};" ;
9090
91+ result += "\nvar __LoadManager = function() { this.list = []; this.done = false; }" ;
92+ result += "\n__LoadManager.prototype.execWhenReady = function(cb) { if (this.done) { cb(); } else { this.list.push(cb) } }" ;
93+ result += "\n__LoadManager.prototype.doFirst = function(todo) { var self = this; todo(function() { self.done = true; self.list.map((x) => x.apply()) }) }" ;
94+ result += "\nthis.__loadManagerInstance = new __LoadManager();" ;
95+ result += "\nthis.__mainContext = this;" ;
96+
9197 result += "\nvar whenEnvIsLoaded = function(cb) {" ;
9298 result += "\n if (typeof document !== 'undefined' && document !== null) {" ;
9399 result += "\n document.addEventListener('DOMContentLoaded', cb);" ;
@@ -105,7 +111,7 @@ result += "\n";
105111 result += plugin . generateProvider ( self ) + "\n" ;
106112 } ) ;
107113 } else {
108- result += "\nwhenEnvIsLoaded(function() {\n" ;
114+ result += "\nwhenEnvIsLoaded(__loadManagerInstance.doFirst( function(done ) {\n" ;
109115
110116 result += "\nif (typeof window !== 'undefined') { window.web3 = undefined; }" ;
111117
@@ -138,13 +144,14 @@ result += "\n";
138144 connectionCode += "\nweb3.eth.getAccounts(function(err, account) { if(err) { next(null, true) } else { next(null, false) }})" ;
139145
140146 connectionCode += "\n}, function(err, _result) {" ;
147+ connectionCode += "\nweb3.eth.defaultAccount = web3.eth.accounts[0];" ;
148+ connectionCode += '\ndone();' ;
141149 connectionCode += "\n});" ;
142150
143151 result += connectionCode ;
144152 }
145153
146- result += "\nweb3.eth.defaultAccount = web3.eth.accounts[0];" ;
147- result += '\n})' ;
154+ result += '\n}))' ;
148155 }
149156
150157 return result ;
@@ -175,21 +182,21 @@ result += "\n";
175182 let gasEstimates = JSON . stringify ( contract . gasEstimates ) ;
176183
177184 // TODO: refactor this
178- result += "\nif (whenEnvIsLoaded === undefined) {" ;
179- result += "\n var whenEnvIsLoaded = function(cb) {" ;
180- result += "\n if (typeof document !== 'undefined' && document !== null) {" ;
181- result += "\n document.addEventListener('DOMContentLoaded', cb);" ;
182- result += "\n } else {" ;
183- result += "\n cb();" ;
184- result += "\n }" ;
185- result += "\n }" ;
186- result += "\n}" ;
187-
188- result += "\nwhenEnvIsLoaded (function() {" ;
185+ // result += "\nif (whenEnvIsLoaded === undefined) {";
186+ // result += "\n var whenEnvIsLoaded = function(cb) {";
187+ // result += "\n if (typeof document !== 'undefined' && document !== null) {";
188+ // result += "\n document.addEventListener('DOMContentLoaded', cb);";
189+ // result += "\n } else {";
190+ // result += "\n cb();";
191+ // result += "\n }";
192+ // result += "\n }";
193+ // result += "\n }";
194+
195+ result += "\n__loadManagerInstance.execWhenReady (function() {" ;
189196 result += "\nif (typeof window !== 'undefined') { window." + className + " = undefined; }" ;
190197 if ( useEmbarkJS ) {
191198 let contractAddress = contract . deployedAddress ? ( "'" + contract . deployedAddress + "'" ) : "undefined" ;
192- result += "\n " + className + " = new EmbarkJS.Contract({abi: " + abi + ", address: " + contractAddress + ", code: '" + contract . code + "', gasEstimates: " + gasEstimates + "});" ;
199+ result += "\n__mainContext. " + className + " = new EmbarkJS.Contract({abi: " + abi + ", address: " + contractAddress + ", code: '" + contract . code + "', gasEstimates: " + gasEstimates + "});" ;
193200 } else {
194201 result += "\n" + className + "Abi = " + abi + ";" ;
195202 result += "\n" + className + "Contract = web3.eth.contract(" + className + "Abi);" ;
0 commit comments